[英]Java Regex Capture Text Between “”" or '''
我有一個要用Java Regex解析的文檔,並且該文檔的引號中出現“””或“'',因此您具有:
“”“ Bla,你不是很好!”“”或:
'''Bla,這不是一個很好的例子'''
我一直在嘗試["""|''']([\\p{Alnum}|\\p{Blank}]+)[\\"""|''']
假設:文本將以“”“或'''開頭和結尾。文本可能包括數字,字母,空格和標點符號。文本正文將不包含三個“或三個”的序列
嘗試以下模式:( ("""|''').*?\\1
鑒於:
"""Hello, World!""" some unquoted text """ lorem ipsum ''" dolor """ some more unquoted text '''single quotes'''
''' Bla, this 1 isn't a great example '''
它將匹配:
"""Hello, World!"""
""" lorem ipsum ''" dolor """
'''single quotes'''
''' Bla, this 1 isn't a great example '''
您也可能比.*?
更具體.*?
但是我不確定“標點符號”是什么字符。
像這樣對我有用的東西:
Pattern p = Pattern.compile("(\"{3}(.*?)\"{3})|('{3}(.*?)'{3})");
String s1 = "\"\"\" Bla, you're not very nice! \"\"\"";
String s2 = "''' Bla, this 1 isn't a great example '''";
Matcher m1 = p.matcher(s1);
Matcher m2 = p.matcher(s2);
if (m1.matches())
{
System.out.println(m1.group(2));
}
if (m2.matches())
{
System.out.println(m2.group(4));
}
但是,僅使用2個正則表達式將使其更簡單。 上面的代碼產生了以下內容:
布拉,你不是很好!
Bla,這個1不是一個好例子
正則表達式的問題之一是,方括號內的任何文本均為OR'D ,這意味着Pipe字符無用(作為OR
運算符)。 您將需要用圓括號替換方括號。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.