我在编写Java正则表达式时遇到问题,以下是匹配字符串的要求:
-
' or abc
:匹配 -
X' or abc
:匹配 -
Good X' or abc
:匹配 -
Good 'X' or abc
: 不匹配
我正在使用 java.util.regex.Pattern 和 java.util.regex.Matcher。 match 表示 java.util.regex.Matcher.matches() 返回 true。
这是我写的正则表达式:".*((((?<!\\')[^\\s\\']+))[\\'\\s]+(or|and)).*"
。但它不起作用。
对于我的应用程序中的某些要求,我必须在正则表达式的开头和结尾使用“.*”。
我是正则表达式新手,有人可以帮助我吗?
谢谢。
最佳答案
从您的示例中,我猜您正在尝试检查字符串中是否只有一个 '
。
正则表达式可以是^[^']*'[^']*$
,使用matches
方法可以简化为[^' ]*'[^']*
:
[^']*
:除' 之外的所有内容
'
:A'
[^']*
:除' 之外的所有内容
String[] a = {
"' or abc",
"X' or abc",
"Good X' or abc",
"Good 'X' or abc"
};
for (int i = 0; i < a.length; i++) {
Pattern p = Pattern.compile("[^']*'[^']*");
Matcher m = p.matcher(a[i]);
System.out.println(m.matches());
}
输出:
true
true
true
false
但是,您不需要 Pattern
和 Matcher
来实现此目的,只需使用
yourString.matches("[^']*'[^']*");
关于java - 编写一个Java正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21431481/