[英]regular expression to parse option string in python
我似乎無法創建正確的正則表達式來從字符串中提取正確的標記。 用空格填充字符串的開頭會生成正確的輸出,但似乎不是最優的:
>>> import re
>>> s = '-edge_0triggered a-b | -level_Sensitive c-d | a-b-c'
>>> re.findall(r'\W(-[\w_]+)',' '+s)
['-edge_0triggered', '-level_Sensitive'] # correct output
這是我嘗試過的一些正則表達式,是否有人提出不涉及更改原始字符串並生成正確輸出的正則表達式建議
>>> re.findall(r'(-[\w_]+)',s)
['-edge_0triggered', '-b', '-level_Sensitive', '-d', '-b', '-c']
>>> re.findall(r'\W(-[\w_]+)',s)
['-level_Sensitive']
更改第一個限定詞以接受開始的錨或一個非單詞,而不是一個非單詞:
>>> re.findall(r'(?:^|\W)(-[\w_]+)', s)
['-edge_0triggered', '-level_Sensitive']
組開頭的?:
只是告訴正則表達式引擎不要出於結果目的將其視為一個組。
r'(?:^|\W)(-\w+)'
\\w
已經包含下划線。
您可以在后面使用否定式:
re.findall(r'(?<!\w)(-\w+)', s)
(?<!\\w)
部分的意思是“僅在不帶單詞字符的情況下匹配”。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.