2012-06-07 45 views
1

我正在嘗試使用此重新格式r'\({2}.+?\){2}' 從文本中捕獲((slug1/slug2/slug3 someword))表達式。用正則表達式捕獲slug1/slug2/slug3頁面的正確方法是什麼?

它給了我整個表達本身,即'((slug1/slug2/slug3 someword))'。然後我使用Python:split解析它,分別得到slug1/slug2/slug3someword

我怎樣才能得到相同的使用純正則表達式模式與組。 應該是什麼模式? 任何幫助表示讚賞。

回答

1

假設蛞蝓不能包含空格:

\({2}(\S*)\s(.*?)\){2} 

更明確地說:

\({2} # two literal '(' characters 
(\S*) # any number of non-whitespace characters, captured in group 1 
\s  # any whitespace character 
(.*?) # any number of characters, reluctantly, captured in group 2 
\){2} # two literal ')' characters 

所以slug1/slug2/slug3將在第1組和someword將在第2組

+0

非常有用的例子我! – Swordfish

0

我來了與此正則表達式:

/([\w\/]+) (\w+)/ 

它的計算結果正確使用這個命令:

perl -e '$a="((slug1/slug2/slug3 someword))"; if ($a =~ /([\w\/]+) (\w+)/) {print "$1 $2"}' 
+0

根據OP的使用情況,您可能需要添加parens(例如,如果它們正在文件上運行正則表達式,並且文件中有大量不想匹配的文本)。 – beerbajay

+0

正確:)如果作者給我們更多的洞察文本結構 – Sicco

+0

文本可能是任何東西,它將被用於用戶輸入字段。 – Swordfish

相關問題