[英]Regex to match everything except this regex
我认为对很多人来说这是一件简单的事情,但目前我对正则表达式的知识非常有限。 我希望匹配除字符串中的两位数字之外的所有内容。
例如:
测试 22 KLO4567
QE 45 C2C
LOP 10 G7G400
现在我发现正则表达式匹配两位数字:\\ d {2}
符合以下条件:
测试22 KLO4567
QE 45 C2C
LOP 10 G7G400
现在在我看来,将这个正则表达式转换为匹配所有内容但是“\\ d {2}”相当容易。 我搜索了很多,但我似乎无法完成它。 我希望这里有人可以提供帮助。
这仅适用于正则表达式引擎支持后面的内容:
^.+?(?=\d{2})|(?<=\d{2}).+$
说明:
|
将两种情况分开:
这匹配从字符串开头( ^
)到遇到\\d{2}
内容。
这匹配字符串的结尾,从两位数后面的位置。
如果你的正则表达式引擎不支持外观(例如JavaScript),我认为使用纯正则表达式解决方案是不可能的。
你可以匹配第一部分:
^.+?(?=\d{2})
然后获取匹配结束的位置,将2添加到该数字,并从该索引获取子字符串。
你正确拒绝正则表达式中的搜索通常是相当棘手的。
在你的情况下,我认为你想要[^\\d{2}]
,但是,这很棘手,因为你的其他字符串也包含两位数,所以使用它的正则表达式不会选择它们。
我会使用这个正则表达式(使用PCRE 8.36
但也应该在其他人工作):
\\*{2}\\w*\\*{2}
说明:
\\*{2}
....精确地匹配“*”两次
\\w*
....匹配“单词字符”零或无限次
找到一个正则表达式很简单:
^(.*?[^\d])\d{2}([^\d].*?)$
解释:
要测试此reges,您可以使用此链接
它将匹配第一次出现的两位数,但因为OP说只有一个它正确地完成了工作。 我希望它可以与每个正则表达式引擎一起使用,因为没有太复杂的使用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.