【问题标题】:generate search words from text with CamelCase by using regEx使用正则表达式从带有 CamelCase 的文本中生成搜索词
【发布时间】:2018-11-16 20:56:47
【问题描述】:

我想从这个文本中用 CamelCase 搜索词来生成。 我不知道这是否仅适用于 RegEx。但我已经很接近了。 我在脚本语言 AutoHotkey (https://autohotkey.com/docs/misc/RegEx-QuickRef.htm) 中使用它。

数据:推荐用于未来的 AutoHotkeyReleases。

正则表达式:(((\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

【问题讨论】:

    标签: regex autohotkey


    【解决方案1】:

    我制作了一个几乎可以满足您需求的正则表达式。但是,我缺少一种组合。我不认为,这是可能的,因为它需要括号重叠,'Hotkey' 必须是两个不同重叠组的一部分。

    好吧,这里是正则表达式:

    /\b((\w+?(?=[A-Z]|\b))([A-Z][a-z]*)?)([A-Z][a-z]*)?/g
    

    它以单词boundary 开头,然后创建2 个组,Group 2 匹配任何Word 字符一次或多次(不贪心)直到look ahead 匹配Capital 字母或单词boundary到达了。

    第 3 组将匹配一个 Capital 字母,后跟零个或多个 lowercase 字母。那是可选的。

    Group 1 结合了Group 2Group 3

    最后Group 4 将匹配Capital 字母后跟零个或多个lowercase 字母。那是可选的。

    如前所述,我认为不可能创建一个组合第 3 组和第 4 组的组,因为它们重叠。除此之外,这应该可以如您所愿。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-13
    • 2012-03-10
    • 2019-11-16
    • 2010-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多