正则表达式设计特殊字符串

Gir*_*ish 0 java regex

无法在 以单引号或双引号?结尾的行中实现正则表达式;

例如:

?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)

anu*_*ava 5

您可以使用此正则表达式:

(["']?)\?.*;\1
Run Code Online (Sandbox Code Playgroud)

对于Java使用:

final String pattern = "(['\"]?)\\?.*;\\1";
Run Code Online (Sandbox Code Playgroud)

正则演示

  • (["']?)匹配可选 '"并捕获组1
  • \1 向后引用与组#1中相同的值

  • 是的,工作谢谢^,不需要$ (2认同)