Java 用引号括起来的匹配模式

Java 用引号括起来的匹配模式,java,regex,Java,Regex,我正在尝试获得符合模式的组。 输入字符串等于类 'one and two!' and 'three or four five' and 'six' 我已经试过了。但是它匹配并且不在单引号内 (?:'(?:\S*)*(和|或)+(?:\S*\S*)*)+ 我想要像这样的团体 'one and two!' 'three or four five' 所有带有和|或在单引号内的字符串都应匹配。在单引号中,它可以有特殊字符和许多空格等 如何更改上面的模式?试试这个 "'.+?(\\s(and|or)\

我正在尝试获得符合模式的组。 输入字符串等于类

'one and two!' and 'three or four five' and 'six'
我已经试过了。但是它匹配并且不在单引号内

(?:'(?:\S*)*(和|或)+(?:\S*\S*)*)+

我想要像这样的团体

'one and two!'
'three or four five'
所有带有和|或在单引号内的字符串都应匹配。在单引号中,它可以有特殊字符和许多空格等

如何更改上面的模式?

试试这个

"'.+?(\\s(and|or)\\s).+?'"

如果单引号中没有单引号,则可以使用以下模式:

final Pattern PATTERN = Pattern.compile("('[^']+')( (and|or) )?");
然后,您将收集列表中的所有匹配项,如下所示:

final List<String> matches = new ArrayList<>();

final Matcher m = PATTERN.matcher(input);

while (m.find())
    matches.add(m.group(1));
final List matches=new ArrayList();
最终匹配器m=模式匹配器(输入);
while(m.find())
匹配。添加(m组(1));

如果存在潜在的未替换的单引号,那么这在正则表达式中是不可行的。如果它们可以转义,那么就寻找一种编写高效正则表达式的技术。

是否也可以嵌入单引号?嵌入单引号?你是说像这样的一和二?是的,它可以有任何特殊的特征。像“一和二”是可能的,他们甚至不会逃脱?那么你不能用regexesNope来做这件事。如果引号中没有引号,我至少可以这样做吗?我可以要求API提供商将所有内容包装在一个引号中,而文本不会有一个引号