[英]REGEX-String and escaped quote
如何獲得以下兩個文本中引號之間的內容?
text_1 = r""" "Some text on \"two\" lines with a backslash escaped\\" \
+ "Another text on \"three\" lines" """
text_2 = r""" "Some text on \"two\" lines with a backslash escaped\\" + "Another text on \"three\" lines" """
對我來說問題是,如果它們被轉義,應該忽略引號,但是有可能使反斜杠轉義。
我想獲得以下小組。
[
r'Some text on \"two\" lines with a backslash escaped\\',
r'Another text on \"three\" lines'
]
"(?:\\.|[^"\\])*"
匹配帶引號的字符串,包括其中出現的任何轉義字符。
說明:
" # Match a quote.
(?: # Either match...
\\. # an escaped character
| # or
[^"\\] # any character except quote or backslash.
)* # Repeat any number of times.
" # Match another quote.
匹配除雙引號外的所有內容:
import re
text = "Some text on \"two\" lines" + "Another text on \"three\" lines"
print re.findall(r'"([^"]*)"', text)
產量
['two', 'three']
>>> import re
>>> text_1 = r""" "Some text on \"two\" lines with a backslash escaped\\" \
+ "Another text on \"three\" lines" """
>>> text_2 = r""" "Some text on \"two\" lines with a backslash escaped\\" + "Another text on \"three\" lines" """
>>> re.findall(r'\\"([^"]+)\\"', text_2)
['two', 'three']
>>> re.findall(r'\\"([^"]+)\\"', text_1)
['two', 'three']
也許你想要這個:
re.findall(r'\\"((?:(?<!\\)[^"])+)\\"', text)
>>> import re
>>> text = "Some text on\n\"two\"lines" + "Another texton\n\"three\"\nlines"
>>> re.findall(r'"(.*)"', text)
["two", "three"]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.