我正在尝试在紧接特定单词之后的单词中的大写字母之前添加一个空格。
之前:
[XpTo("GetTheStuff", "XXX")]
之后:
[XpTo("Get The Stuff", "XXX")]
这是我的最佳尝试:
表达式:(\[XpTo\(")([A-Z]{1}[a-z]+)+
替换:$1 $2
结果:[XpTo(" Stuff", "XXX")]
我不明白为什么第二组 ([A-Z]{1}[a-z]+)
不“迭代”并且仅返回最后一次出现的原因。
答案 0 :(得分:2)
您可以使用支持可变长度模式的.NET幕后花线:
(?<=\[XpTo\("(?:[A-Z]+[a-z]+)+)[A-Z]+[a-z]+
用空格和$&
(整个匹配值的后向引用)替换。
请参见regex demo
详细信息
(?<=\[XpTo\("(?:[A-Z]+[a-z]+)+)
-向后的正向查找,要求其模式立即与当前位置的左侧匹配:
\[XpTo\("
-文字[XpTo("
文字(?:[A-Z]+[a-z]+)+
-的一个或多个序列[A-Z]+[a-z]+
-一个或多个大写ASCII字母,后跟一个或多个小写ASCII字母[A-Z]+
-一个或多个大写ASCII字母[a-z]+
-一个或多个小写ASCII字母