【发布时间】:2020-05-10 02:25:45
【问题描述】:
我已经尝试了大约两个小时来编写一个匹配单个字符的正则表达式,该字符前后没有相同的字符。
这就是我得到的:(\d)(?<!\1)\1(?!\1);但它似乎不起作用! (测试https://regex101.com/r/whnj5M/6)
例如:
在1111223 中,我希望最后匹配3,因为它的前面或后面都没有另一个 3。
在 1151223 中,出于与上述相同的原因,我希望匹配中间的 5 和末尾的 3。
这样做的最终目标是能够在字符串中找到成对(并且只有成对)字符(例如,在 112223 中找到 11 或在 123544 中找到 44),我打算尝试并匹配单个孤立字符,然后在其中添加 {2} 以查找对,但我什至似乎无法匹配孤立字符!
任何帮助将不胜感激,我认为我非常了解 RegEx!
附:我正在 regex101.com 上的 JS 中进行测试,因为它不允许我在 Python 中使用可变长度回溯,并且我正在使用 regex 库在我的实际实现中允许这样做。
【问题讨论】:
-
“没有先于还是先于”?您的意思是“没有先于或后于”吗?
-
糟糕,对不起!我会解决这个问题,谢谢,我一开始写的是“没有先于或成功”,但这听起来很奇怪:P
-
你需要使用正则表达式吗?这似乎是一个简单的
for循环更容易解决的问题。 -
@BallpointBen 我确实用普通 Python 解决了实际问题,但老实说,我认为它可能可以在正则表达式中完成,而且我有一段时间没有使用它,所以我想我会尝试它。这个问题并不是要弄清楚我的问题,而是我想知道为什么正则表达式似乎与我认为的不匹配:P
-
@LKloosterman 很公平,只要确保你没有错过明显的东西
标签: python-3.x regex