不以特定单词开头的正则表达式
Regex for not starting with specific word
我尝试在每个没有开头 [string]:
的单词前添加 Line:
开头所以我做了这个正则表达式 ^(?![^:]+:)
https://regex101.com/r/oMF8ks/1
如果我写
1
2
3
它returns我想要的
Line:1
Line:2
Line:3
和
Line:1
Line:2
Line:3
它returns和想要的一样
但是当我尝试在 https://regex101.com/r/K0z3bc/1
上应用它时出现问题
1 : A
2 : B
3 : C
我预计
Line:1 : A
Line:2 : B
Line:3 : C
但我只有
1 : A
2 : B
3 : C
但是当我将正则表达式更改为 ^(?!Line:)
https://regex101.com/r/49i9tQ/1 时它可以工作,但我希望它适用于所有单词而不仅仅是 Line
您可以使用
^([^:\s]++)(?!:)
并替换为 Line:
。
参见regex demo。 详情:
^
- 字符串开头
([^:\s]++)
- 第 1 组:除 :
和空格之外的一个或多个字符(所有格量词可防止回溯到 [^:\s]
模式,因此如果存在冒号则可防止部分匹配进一步在字符串中)
(?!:)
- 后面没有紧跟冒号。
您也可以省略组,然后使用 ^[^:\s]++(?!:)
并替换为 Line:[=18=]
。参见 this regex demo。
你试过的模式^(?![^:]+:)
的意思是:断言当前位置右边除:
外没有1个或多个字符,然后匹配:
您无法正确替换 1 : A
等字符串,因为取反字符 class [^:]
也匹配空白字符。
您也可以排除匹配的空白字符:
^(?![^:\s]+:)
在 regex101 demo 查看替换。
我尝试在每个没有开头 [string]:
的单词前添加 Line:
开头所以我做了这个正则表达式 ^(?![^:]+:)
https://regex101.com/r/oMF8ks/1
如果我写
1
2
3
它returns我想要的
Line:1
Line:2
Line:3
和
Line:1
Line:2
Line:3
它returns和想要的一样
但是当我尝试在 https://regex101.com/r/K0z3bc/1
上应用它时出现问题1 : A
2 : B
3 : C
我预计
Line:1 : A
Line:2 : B
Line:3 : C
但我只有
1 : A
2 : B
3 : C
但是当我将正则表达式更改为 ^(?!Line:)
https://regex101.com/r/49i9tQ/1 时它可以工作,但我希望它适用于所有单词而不仅仅是 Line
您可以使用
^([^:\s]++)(?!:)
并替换为 Line:
。
参见regex demo。 详情:
^
- 字符串开头([^:\s]++)
- 第 1 组:除:
和空格之外的一个或多个字符(所有格量词可防止回溯到[^:\s]
模式,因此如果存在冒号则可防止部分匹配进一步在字符串中)(?!:)
- 后面没有紧跟冒号。
您也可以省略组,然后使用 ^[^:\s]++(?!:)
并替换为 Line:[=18=]
。参见 this regex demo。
你试过的模式^(?![^:]+:)
的意思是:断言当前位置右边除:
外没有1个或多个字符,然后匹配:
您无法正确替换 1 : A
等字符串,因为取反字符 class [^:]
也匹配空白字符。
您也可以排除匹配的空白字符:
^(?![^:\s]+:)
在 regex101 demo 查看替换。