如何解决如何在Camel Case中使用特殊大写单词拆分单词?
我正在尝试使我的深度学习模型的配置名称更易于理解。我要做的第一件事是将配置名称拆分为令牌。
输入就像:
allow-nonxdr-writes
io.native.lib.available
ha.zookeeper.parent-znode
min_file_size
ProxyStatus
ProxyFCGIBackendType
SessionDBDCookieRemove
DBDriver
SSLOCSPDefaultResponder
相应的输出应为:
allow nonxdr writes
io native lib available
ha zookeeper parent znode
min file size
Proxy Status
Proxy FCGI Backend Type
Session DBD Cookie Remove
DB Driver
SSL OCSP Default Responder
如上所示,配置名称的格式各不相同(因为它们来自不同组织的不同软件)。对于前四个名称,可以使用.
,-
或_
之类的分隔符来分割它们。最后五个对我来说很难。如果仅由Camel-Case负责人使用大写字母开头的单词来拆分这些名称,则具有特殊含义的单词(例如FCGI
,DBD
,DB
)可能会错误地拆分。
是否有适合解决此问题的良好做法?手动构建字典是解决此问题的唯一方法吗?
顺便说一句。这种情况仅在处理Apache Httpd中的配置名称时发生。
解决方法
以下正则表达式模式似乎越来越接近:
[-._]|(?<=[a-z])(?=[A-Z])|(?<=[A-Z])(?=[A-Z][a-z])
说明:
[-._] split on -,.,or _
| OR
(?<=[a-z])(?=[A-Z]) split when lowercase precedes and uppercase follows
| OR
(?<=[A-Z])(?=[A-Z][a-z]) split when uppercase precedes followed by upper-lower
Demo
唯一不符合您期望的测试输入是:
SSLOCSPDefaultResponder
我的正则表达式给出:
SSLOCSP Default Responder
这样做的原因是,没有明确的规则可以使我们知道SSL
和OCSP
之间应该有一个中断。如果您希望采用这种逻辑,则可能需要保留一个已知“单词”的词典,并在该词典周围进行其他拆分。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。