我有一个文档,我正在尝试使用Java Regex进行解析,并在其中显示引号中的文本“”或“”,因此您有:
“”“Bla,你不是很好!”“” 或者:
'''Bla,这个1不是一个很好的例子'''
我一直在尝试["""|''']([\p{Alnum}|\p{Blank}]+)[\"""|''']
假设: 文本将以“”或“”开头和结尾 文本可能包括数字,字母,空格和标点符号 文本正文将不包括三个“或三个”
的序列答案 0 :(得分:0)
尝试此模式:("""|''').*?\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 '''
您也可能比.*?
更具体,但我不确定“标点符号”中您指的是什么字符。
答案 1 :(得分:0)
这样的事情对我有用:
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,你不是很好!Bla,这个1不是一个很好的例子
正则表达式的一个问题是方括号内的任何文本都是 OR'D ,这意味着Pipe字符是无用的(作为OR
运算符)。您需要将圆括号替换为方括号。