匹配但不选择正则表达式

时间:2018-01-03 12:07:46

标签: regex visual-studio-code

我正在尝试捕获术语ISomething,只有当它没有紧接在句号.之前时,我的搜索才会捕获前面的字母或空格。我正在使用javascript样式的正则表达式(确切地说是vscode搜索)。

我的目标是在不触及现有名称空间的情况下将ISomething替换为Namespace.ISomething

Live example

我的搜索示例

Api.Resources.Things.Bits.ISomething     //doesn't match
something : ISomething
List<ISomething>
something:ISomething
isomething                               //doesn't match

我的正则表达式

[^\.](ISomething)

我的匹配,第一个捕获空白,第二个捕获箭头,第三个捕获括号。

  ISomething
 <ISomething
 :ISomething

如何(以及为什么)我能在上述所有内容中获得ISomething这个词?

3 个答案:

答案 0 :(得分:2)

您可以使用

查找内容(^|[^.])\b(ISomething)\b
替换为$1Namespace.$2

请参阅下面的regex demo和VSCode设置:

enter image description here

请注意,Aa(区分大小写)和.*(正则表达式模式)选项必须为ON。

点击全部替换后,结果为:

enter image description here

正则表达式详细信息

  • (^|[^.]) - 第1组:行/字符串的开头或.以外的任何字符
  • \b - 字边界
  • (ISomething) - 第2组:单词ISomething
  • \b - 字边界

答案 1 :(得分:1)

如果支持\K可能是您正在寻找的内容:

[^\.]\KISomething

答案 2 :(得分:0)

你可以使用负面的背后隐藏

(?<!\.)ISomething基本上这将匹配任何前面没有.

的ISomething