我正在尝试在大写字母之前添加一个空格,该单词出现在特定单词之后。
之前:
[XpTo("GetTheStuff", "XXX")]
后:
[XpTo("Get The Stuff", "XXX")]
这是我最好的尝试:
表达:(\[XpTo\(")([A-Z]{1}[a-z]+)+
替换:$1 $2
结果:[XpTo(" Stuff", "XXX")]
我不明白为什么第二组([A-Z]{1}[a-z]+)
不“迭代”并且只返回最后一次出现。
您可以使用支持可变长度模式的.NET lookbehind:
(?<=\[XpTo\("(?:[A-Z]+[a-z]+)+)[A-Z]+[a-z]+
替换为空格和$&
,对整个匹配值的反向引用。
细节
(?<=\[XpTo\("(?:[A-Z]+[a-z]+)+)
- 一个积极的lookbehind,需要它的模式立即匹配当前位置的左侧:
\[XpTo\("
- 文字[XpTo("
文本
(?:[A-Z]+[a-z]+)+
- 一个或多个序列
[A-Z]+[a-z]+
- 一个或多个大写ASCII字母,后跟一个或多个小写ASCII字母[A-Z]+
- 一个或多个大写ASCII字母[a-z]+
- 一个或多个小写ASCII字母