Python:字符串的模式匹配

时间:2010-10-21 06:43:34

标签: python regex

我试图逐行检查一个文件any_string = any_string。它必须是那种格式,没有空格或其他任何东西。该行必须包含一个字符串,然后是“=”,然后是另一个字符串,没有别的。有人可以帮我解决这个问题吗? =]

pattern='*\S\=\S*'

我有这个,但我很确定它的错误哈哈。

5 个答案:

答案 0 :(得分:4)

不知道您是否在两个=方面寻找具有相同值的行。如果是,那么使用:

the_same_re = re.compile(r'^(\S+)=(\1)$')

如果值不同,请使用

the_same_re = re.compile(r'^(\S+)=(\S+)$')

在这个正则表中:

  • ^是行
  • 的开头
  • $是行尾
  • \S+是一个或多个非空格字符
  • \1是第一组
在正则表达式字符串表示“原始”字符串之前

r,因此您无需在字符串中转义反斜杠。

答案 1 :(得分:1)

pattern = r'\S+=\S+'

如果您希望能够抓住左侧和右侧,可以添加捕获组:

pattern = r'(\S+)=(\S+)'

如果您不想在行中允许多个等号(这会产生奇怪的事情),您可以使用:

pattern = r'[^\s=]+=[^\s=]+'

答案 2 :(得分:1)

我不知道你想要的任务是什么使用这个模式。也许你想要解析配置文件。 如果是,您可以使用模块ConfigParser。

答案 3 :(得分:1)

好的,所以你想找到anystring=anystring而不是别的。然后不需要正则表达式。

>>> s="anystring=anystring"
>>> sp=s.split("=")
>>> if len(sp)==2:
...   print "ok"
...
ok

答案 4 :(得分:1)

从Python 2.5开始,我更喜欢拆分。如果您不喜欢空格,请检查。

left, _, right = any_string.partition("=")
if right and " " not in any_string:
    # proceed

学习正则表达式也永远不会伤害。