无法在
以单引号或双引号?结尾的行中实现正则表达式;。
例如:
?abcdef;
'?abcdef;'
"?abcdef;"
Run Code Online (Sandbox Code Playgroud)
我做了很多尝试,就像这样,"^\\?([^;]+)\\;$"但是没有用。
测试代码段:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegexTest {
public static void main(final String[] args) {
final String text = "This is param-start ?abcdef; param-end";
final String patternString = "(['\"]?)\\?.*;\\1";
final Pattern pattern = Pattern.compile(patternString, Pattern.CASE_INSENSITIVE);
final Matcher matcher = pattern.matcher(text);
System.out.println("lookingAt = " + matcher.lookingAt());
System.out.println("matches = " + matcher.matches());
}
}
Run Code Online (Sandbox Code Playgroud)
您可以使用此正则表达式:
(["']?)\?.*;\1
Run Code Online (Sandbox Code Playgroud)
对于Java使用:
final String pattern = "(['\"]?)\\?.*;\\1";
Run Code Online (Sandbox Code Playgroud)
(["']?)匹配可选 '或"并捕获组1\1 向后引用与组#1中相同的值