我有一個正則表達式,其可具有無論是從表達:蟒重,發現含有可選的組
(src://path/to/foldernames canhave spaces/file.xzy)
(src://path/to/foldernames canhave spaces/file.xzy "optional string")
發生更長的串內的這些表達式(它們不是單獨的字符串)。我在使用re.search
或re.findall
時遇到了匹配兩個表達式的問題(因爲字符串中可能有多個表達式)。
它的簡單,足以匹配單獨,但我怎麼能去,使返回兩組匹配任何一種情況下,先用src://path/...
和第二,如果它存在的optional string
或None
如果不是?
我想,我需要以某種指定或羣體---比如,可以考慮:
\((.*)(".*")\)
第二個實例,但不是第一個,因爲它不包含"..."
匹配模式。
r = re.search(r'\((.*)(".*")\)', '(src://path/to/foldernames canhave spaces/file.xzy)'
r.groups() # Nothing found
AttributeError: 'NoneType' object has no attribute 'groups'
雖然\((.*)(".*")?\)
匹配的第一個組,但不單獨標識該"optional string"
如在第二個實例的基團。
r = re.search(r'\((.*)(".*")?\)', '(src://path/to/foldernames canhave spaces/file.xzy "optional string")')
r.groups()
('src://path/to/foldernames canhave spaces/file.xzy "optional string"', None)
任何想法,你們的表達(常規品種)的主人?
+1非貪婪捕捉是要走的路。 – javadba