我希望从此文本中使用CamelCase搜索词来生成。 我不知道只有RegEx才有可能。但是我已经很近了 我在脚本语言AutoHotkey(https://autohotkey.com/docs/misc/RegEx-QuickRef.htm)中使用它。
数据:推荐用于以后的AutoHotkeyReleases。
regEx:(((\b[^A-Z\s]*)?([A-Z][a-z]+)|([\W_-]?[a-z]+)))
(https://regex101.com/r/NgRmXZ/2)
预期的组:
reCommended
re
Commended
for
future
Auto
Hotkey
AutoHotkey
HotkeyReleases
Releases
AutoHotkeyReleases.
我也尝试过,但不适用于我:
(?=\p{Lu}\p{Ll})|(?<=\p{Ll})(?=\p{Lu})
来自Splitting CamelCase with regex
(([a-z]*)(?<=[a-z])((?:[A-Z])[a-z]+))
https://regex101.com/r/NgRmXZ/3
(?<=[a-z])([A-Z])|(?<=[A-Z])([A-Z][a-z])
https://regex101.com/r/NgRmXZ/4
((?<!^)([A-Z][a-z]+|(?<=[a-z])[A-Z][a-z]+))
https://regex101.com/r/B5vXaZ/1
我已经开始在这里实现我的原型: https://gist.github.com/sl5net/ba5aef19f44fe68204ccb6c96e7c96e0
答案 0 :(得分:1)
我制作的正则表达式几乎可以满足您的需求。但是,我缺少一种组合。我不认为这是可能的,因为这需要将括号重叠,'Hotkey'
必须是两个不同重叠组的一部分。
好吧,这是正则表达式:
/\b((\w+?(?=[A-Z]|\b))([A-Z][a-z]*)?)([A-Z][a-z]*)?/g
它以单词boundary
开始,然后创建2个组,Group 2
匹配任何Word
字符一次或多次(不完整),直到look ahead
为{{ 1}}字母或单词Capital
。
第3组将匹配boundary
个字母,后跟零个或多个Capital
个字母。那是可选的。
lowercase
组合了Group 1
和Group 2
。
最后Group 3
将匹配一个Group 4
字母,后跟零个或多个Capital
字母。那是可选的。
如上所述,我认为创建合并第3组和第4组的组是不可能的。除此之外,这应该可以工作。