蟒蛇正则表达式:匹配字符串只有一个字符
假设的例子有两个字符串:蟒蛇正则表达式:匹配字符串只有一个字符
$1 off delicious ham. $1 off delicious $5 ham.
在Python,我可以有一个,只有一个$字符串中匹配时,一个正则表达式?也就是说,我希望RE能够匹配第一个短语,而不是第二个短语。我试过类似的东西:
re.search(r"\$[0-9]+.*!(\$)","$1 off delicious $5 ham.")
..saying“匹配的地方你看到一个$,其次是任何东西,除了另一个$”。 $$示例中没有匹配,但在$示例中也没有匹配。
在此先感谢!对于检查
简单的测试方法:
def test(r): s = ("$1 off $5 delicious ham","$1 off any delicious ham")
for x in s:
print x
print re.search(r,x,re.I)
print ""
回答:
>>> import re >>> onedollar = re.compile(r'^[^\$]*\$[^\$]*$')
>>> onedollar.match('$1 off delicious ham.')
<_sre.SRE_Match object at 0x7fe253c9c4a8>
>>> onedollar.match('$1 off delicious $5 ham.')
>>>
正则表达式的细分:^
停泊在字符串的开始[^\$]*
零个或多个字符不$
\$
匹配一个美元符号[^\$]*
零个或多个不是的字符$
停泊在字符串的结尾
回答:
re.search("^[^$]*\$[^$]*$",test_string)
回答:
^.*?\$[^$]*$
这应该使的伎俩
回答:
你想用一个字符类[^]
的补充匹配其他任何字符比$
:
re.match(r"\$[0-9]+[^\$]*$","$1 off delicious $5 ham.")
是从原始的变化如下:
.*
替换[^\$]*
。新术语[^\$]
表示除字符串之外的任何字符$
$
附加到字符串。强制匹配扩展到字符串的末尾。re.search
替换为re.match
。匹配整个字符串,而不是它的任何子集。
回答:
>>> '$1 off delicious $5 ham.'.count('$') 2
>>> '$1 off delicious ham.'.count('$')
1
以上是 蟒蛇正则表达式:匹配字符串只有一个字符 的全部内容, 来源链接: utcz.com/qa/266554.html