我正在尝试捕获术语ISomething
,只有当它没有紧接在句号.
之前时,我的搜索才会捕获前面的字母或空格。我正在使用javascript样式的正则表达式(确切地说是vscode搜索)。
我的目标是在不触及现有名称空间的情况下将ISomething
替换为Namespace.ISomething
。
我的搜索示例
Api.Resources.Things.Bits.ISomething //doesn't match
something : ISomething
List<ISomething>
something:ISomething
isomething //doesn't match
我的正则表达式
[^\.](ISomething)
我的匹配,第一个捕获空白,第二个捕获箭头,第三个捕获括号。
ISomething
<ISomething
:ISomething
如何(以及为什么)我能在上述所有内容中获得ISomething
这个词?
答案 0 :(得分:2)
您可以使用
查找内容:(^|[^.])\b(ISomething)\b
替换为:$1Namespace.$2
请参阅下面的regex demo和VSCode设置:
请注意,Aa
(区分大小写)和.*
(正则表达式模式)选项必须为ON。
点击全部替换后,结果为:
正则表达式详细信息
(^|[^.])
- 第1组:行/字符串的开头或.
以外的任何字符\b
- 字边界(ISomething)
- 第2组:单词ISomething
\b
- 字边界答案 1 :(得分:1)
如果支持\K
可能是您正在寻找的内容:
[^\.]\KISomething
答案 2 :(得分:0)
你可以使用负面的背后隐藏
(?<!\.)ISomething
基本上这将匹配任何前面没有.