蟒蛇正则表达式:匹配字符串只有一个字符

假设的例子有两个字符串:蟒蛇正则表达式:匹配字符串只有一个字符

$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.") 

是从原始的变化如下:

  1. .*替换[^\$]*。新术语[^\$]表示除字符串之外的任何字符$
  2. $附加到字符串。强制匹配扩展到字符串的末尾。
  3. re.search替换为re.match。匹配整个字符串,而不是它的任何子集。

回答:

>>> '$1 off delicious $5 ham.'.count('$') 

2

>>> '$1 off delicious ham.'.count('$')

1

以上是 蟒蛇正则表达式:匹配字符串只有一个字符 的全部内容, 来源链接: utcz.com/qa/266554.html

回到顶部