我试图逐行检查一个文件any_string = any_string。它必须是那种格式,没有空格或其他任何东西。该行必须包含一个字符串,然后是“=”,然后是另一个字符串,没有别的。有人可以帮我解决这个问题吗? =]
pattern='*\S\=\S*'
我有这个,但我很确定它的错误哈哈。
答案 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
学习正则表达式也永远不会伤害。