匹配任何与给定字符串至少有一个字符不同的字符串
Match any string that deviates at least one character from a given string
我遇到了一个问题,我需要在一组数字中搜索一个数字,这些数字的开头相同但结尾不同,例如:
261234
261235
261236
261334
261244
261134
260234
260134
260123
我可能会补充说,这是在一个日志文件中,其中包含一些其他乱码,这可能会使问题复杂化。假设我想匹配除 261134
之外的任何内容。
我的第一直觉是尝试 26[^1][^1][^3][^4]
但这与上面的 none 匹配,因为在某些时候每个和任何人在我指定否定的位置都有一个否定字符.
我能想到的下一个最接近解决方案的是一英里长的表达式,它会像这样将 ors 链接在一起:
26([^1]134|1[^1]34|11[^3]4|113[^4])
然而,这并不匹配所有内容。相反,我应该这样做:
26([^1]\d{3}|\d[^1]\d\d|\d\d[^3]\d|\d{3}[^4])
我想我在输入这个问题时通过更彻底地思考来回答了我自己的问题,但我仍然很好奇是否有更好的解决方案,因为要弄清楚这个问题真的很笨拙,更不用说为这样一个简单的问题输入了。
我既找不到关于这个的问题也找不到解决方案,所以我希望把它留在这里以帮助其他有类似问题的人是合适的。
使用取反字符 class 如 [^1]
期望匹配并且确实匹配除 char 1
之外的任何字符
使用此模式 26([^1]\d{3}|\d[^1]\d\d|\d\d[^3]\d|\d{3}[^4])
将匹配 263
或 261)33
等值
你可以做的是匹配 26 并使用否定先行 (?!
来断言直接在右边的不是 1134。如果断言成功,则匹配 4 个数字。
为防止数字成为较大单词的一部分,您可以使用单词边界 \b
\b26(?!1134)\d{4}\b
我遇到了一个问题,我需要在一组数字中搜索一个数字,这些数字的开头相同但结尾不同,例如:
261234
261235
261236
261334
261244
261134
260234
260134
260123
我可能会补充说,这是在一个日志文件中,其中包含一些其他乱码,这可能会使问题复杂化。假设我想匹配除 261134
之外的任何内容。
我的第一直觉是尝试 26[^1][^1][^3][^4]
但这与上面的 none 匹配,因为在某些时候每个和任何人在我指定否定的位置都有一个否定字符.
我能想到的下一个最接近解决方案的是一英里长的表达式,它会像这样将 ors 链接在一起:
26([^1]134|1[^1]34|11[^3]4|113[^4])
然而,这并不匹配所有内容。相反,我应该这样做:
26([^1]\d{3}|\d[^1]\d\d|\d\d[^3]\d|\d{3}[^4])
我想我在输入这个问题时通过更彻底地思考来回答了我自己的问题,但我仍然很好奇是否有更好的解决方案,因为要弄清楚这个问题真的很笨拙,更不用说为这样一个简单的问题输入了。 我既找不到关于这个的问题也找不到解决方案,所以我希望把它留在这里以帮助其他有类似问题的人是合适的。
使用取反字符 class 如 [^1]
期望匹配并且确实匹配除 char 1
使用此模式 26([^1]\d{3}|\d[^1]\d\d|\d\d[^3]\d|\d{3}[^4])
将匹配 263
或 261)33
你可以做的是匹配 26 并使用否定先行 (?!
来断言直接在右边的不是 1134。如果断言成功,则匹配 4 个数字。
为防止数字成为较大单词的一部分,您可以使用单词边界 \b
\b26(?!1134)\d{4}\b