Java 正则表达式匹配带有嵌入转义引号的引号字符串
Java regex to match quoted string with embedded escaped quote
我需要有关正则表达式的帮助,以匹配可能包含嵌入式转义引号的带引号字符串。
例如,给定字符串"'John\'s bike'"
。我开始使用的基本模式 "'[^']*'"
,并将其扩展为否定使用后向嵌入转义引号的情况不起作用:"'((?<\)[^'])*'"
。
有人知道吗?
该字符串可以是一系列带引号的字符串,例如“'John\'s bike'、'Mary\'s hat'、'my shoes'”,我想对每个字符串进行标记化分别引用的子字符串。
您可以接受引号之间的任何字符
- 前面有
\
- 不是
'
。
因此您的正则表达式可以如下所示:
'(\.|[^'])*'
在 Java 中应该看起来像 "'(\\.|[^'])*'"
(要在正则表达式中创建 \
文字,我们需要像 \
一样转义它,但同样的规则适用于字符串文字所以我们需要再次转义这两个 \
这最终给了我们 "\\"
)
基于您的示例的演示:
String input = "'John\'s bike', 'Mary\'s hat', 'my shoes'";
Pattern p = Pattern.compile("'(\\.|[^'])*'");
Matcher m = p.matcher(input);
while(m.find()){
System.out.println(m.group());
}
输出:
'John\'s bike'
'Mary\'s hat'
'my shoes'
我需要有关正则表达式的帮助,以匹配可能包含嵌入式转义引号的带引号字符串。
例如,给定字符串"'John\'s bike'"
。我开始使用的基本模式 "'[^']*'"
,并将其扩展为否定使用后向嵌入转义引号的情况不起作用:"'((?<\)[^'])*'"
。
有人知道吗?
该字符串可以是一系列带引号的字符串,例如“'John\'s bike'、'Mary\'s hat'、'my shoes'”,我想对每个字符串进行标记化分别引用的子字符串。
您可以接受引号之间的任何字符
- 前面有
\
- 不是
'
。
因此您的正则表达式可以如下所示:
'(\.|[^'])*'
在 Java 中应该看起来像 "'(\\.|[^'])*'"
(要在正则表达式中创建 \
文字,我们需要像 \
一样转义它,但同样的规则适用于字符串文字所以我们需要再次转义这两个 \
这最终给了我们 "\\"
)
基于您的示例的演示:
String input = "'John\'s bike', 'Mary\'s hat', 'my shoes'";
Pattern p = Pattern.compile("'(\\.|[^'])*'");
Matcher m = p.matcher(input);
while(m.find()){
System.out.println(m.group());
}
输出:
'John\'s bike'
'Mary\'s hat'
'my shoes'