除非存在字符,否则匹配的正则表达式?

2024-04-19 18:44:50 发布

您现在位置:Python中文网/ 问答频道 /正文

除非“x”后跟另一个“x”,否则如何将“x”与右侧任意数量的空格匹配?你知道吗

到目前为止,我已经:

find_nonSpace_rightSideOf_x = re.compile(r'x[\s]*')

但是很明显,即使文本是'xx',这仍然会被捕获。我怎样才能捕捉到'xaldkfjda'、'x'、'x adkf'等,而不是'xxaldkfjdlk'、'xx'等中的第一个x。?你知道吗

编辑:最后一句话的结尾应该是“……但不是‘xxaldkfjdlk’、‘xx’等中的前两个x?”简言之,我想抓住一个“x”,但决不能抓住两个“x”-“xx”-并排。有帮助吗?感谢您迄今为止的投入!你知道吗


Tags: 文本re编辑数量结尾find空格compile
3条回答

另一个简单的解决方案是:

x[^x][\s]*

即“x”后跟“not-x”,后跟空格。你知道吗

顺便说一句,一个非常有用的工具是python正则表达式测试工具:http://pythex.org/

如果我正确理解了您的问题,您需要将最后一个x匹配到行的末尾。你知道吗

为此,可以使用以下正则表达式:

x[^x]*$

Working demo

enter image description here

使用否定的前瞻断言:

re.compile(r'x(?!x)')

会在'xxaldkfjdlk'中捕捉第二个x

but not the first x

要捕获空格,请添加:\s*

re.compile(r'x(?!x)\s*')

一些试验:

>>> m = re.compile(r'x(?!x)\s*')
>>> m.search('xx  ')
<_sre.SRE_Match object; span=(1, 4), match='x  '>
>>> m.search('xxaldkfjdlk')
<_sre.SRE_Match object; span=(1, 2), match='x'>
>>> m.search('xxxx')
<_sre.SRE_Match object; span=(3, 4), match='x'>

相关问题 更多 >