我試圖一行一行地檢查文件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