我试图一行一行地检查文件any_string = any_string。它必须是那种格式,没有空格或其他任何东西。该行必须包含一个字符串,然后是“=”,然后是另一个字符串,而不是别的。有人可以帮我用python的语法来找到这个吗? =]Python:模式匹配的字符串
pattern='*\S\=\S*'
我有这个,但林肯定它错了,哈哈。
我试图一行一行地检查文件any_string = any_string。它必须是那种格式,没有空格或其他任何东西。该行必须包含一个字符串,然后是“=”,然后是另一个字符串,而不是别的。有人可以帮我用python的语法来找到这个吗? =]Python:模式匹配的字符串
pattern='*\S\=\S*'
我有这个,但林肯定它错了,哈哈。
不知道您是否正在寻找在=
两侧具有相同值的线。如果是,则使用:
the_same_re = re.compile(r'^(\S+)=(\1)$')
如果值可以不同,然后用
the_same_re = re.compile(r'^(\S+)=(\S+)$')
在这种regexpes:
^
是线$
的开头是行结束\S+
是一个或更多的非空格字符\1
是第一组的正则表达式的字符串的意思是“原始”的字符串r
之前,所以你不需要逃避串反斜杠。
pattern = r'\S+=\S+'
如果你希望能够抓住左,右手边,您可以添加捕获组:
pattern = r'(\S+)=(\S+)'
如果你不想让多个等号的行(这将做怪异的事情),你可以使用这个:
pattern = r'[^\s=]+=[^\s=]+'
谢谢,雅我可能需要捕捉它以供以后使用soo .. pattern = r'([^ \ s =])+ =(^ \ s =] +)' – nubme 2010-10-21 07:04:54
我不知道你想要什么使用这种模式的任务。也许你想解析配置文件。 如果这是真的,你可以使用模块ConfigParser。
好的,所以你想找到anystring=anystring
,没有别的。那么不需要正则表达式。
>>> s="anystring=anystring"
>>> sp=s.split("=")
>>> if len(sp)==2:
... print "ok"
...
ok
这将找到任何一行“=”在里面。可能需要检查两个部件是否都是空的。 – neil 2010-10-21 09:28:01
由于Python 2.5我更喜欢这样分裂。如果你不喜欢空间,只需检查。
left, _, right = any_string.partition("=")
if right and " " not in any_string:
# proceed
此外,它永远不会学会正则表达式。
你打算如何使用该模式? – 2010-10-21 06:46:19
另外,我认为这是一个比Python问题更多的正则表达式问题。只是说! – Chetan 2010-10-21 06:47:59
@chetan:你好点。哈哈 – nubme 2010-10-21 07:54:10