Java 仅接受双引号且仅在其后跟反斜杠时接受双引号的正则表达式

Java 仅接受双引号且仅在其后跟反斜杠时接受双引号的正则表达式,java,regex,Java,Regex,如何为接受的字符串生成正则表达式 仅当双引号跟在反斜杠后面时才使用双引号 如果反斜杠为奇数,则最后一个反斜杠应包含特殊字符或任何文字或任何字母 示例:- 正则表达式不应接受以下内容 """ "\" "\\\" "\"" "\r" "\ " here the single backslash is having space after it so it is should be accepted. "\\" "\\\cloud" "\\\ " "clo$d" "cloud space" 正

如何为接受的字符串生成正则表达式

  • 仅当双引号跟在反斜杠后面时才使用双引号
  • 如果反斜杠为奇数,则最后一个反斜杠应包含特殊字符或任何文字或任何字母
  • 示例:- 正则表达式不应接受以下内容

    """
    "\"
    "\\\"
    
    "\""
    "\r"
    "\ "  here the single backslash is having space after it so it is should be accepted.
    "\\"
    "\\\cloud"
    "\\\ "
    "clo$d"
    "cloud space" 
    
    正则表达式应该接受以下内容

    """
    "\"
    "\\\"
    
    "\""
    "\r"
    "\ "  here the single backslash is having space after it so it is should be accepted.
    "\\"
    "\\\cloud"
    "\\\ "
    "clo$d"
    "cloud space" 
    

    它在Java中看起来确实很难看,因为Java和REGEX都使用了转义反斜杠:

    static String REGEX = "([^\"\\\\]|\\\\[^\\\\]+|\\\\\\\\)+";
    
    public static void main(String[] args) {
    
        test("\"");
        test("\\");
        test("\\\\\\");
        System.out.println();
        test("\\\"");
        test("\\r");
        test("\\ ");
        test("\\\\\\cloud");
        test("\\\\\\ ");
        test("clo$d");
        test("cloud space");
    }
    
    public static void test(String s) {
        System.out.println(s + ": " + REGEX + " " + Pattern.matches(REGEX, s));
    }
    

    到目前为止,你尝试了什么?你的例子在开始和结束时都包含<代码> <代码>,它们是由正则表达式处理的文本的一部分,例如<代码> > \“代码>代表4个字符,或者2个字符(如果我们跳过<代码> <代码>),或者可能是1个字符(如果我们跳过<代码> < /代码>,并考虑<代码> \/Case>作为<代码> \/COD>文字)如果<代码> 指示字符串文字的开始和结束,那么考虑从示例中移除它们,以避免混淆。而是发布字符串表示的文本。^\[^A-Za-z0-9]$|^\[A-Za-z0-9]$我尝试了这个方法,但没有成功。是否删除了示例字符串?因为在java中,“\n”将产生一个新行,其中as
    “\\n”
    将产生一个字符串
    \n
    开始和结束双引号是文本的一部分,它不是正则表达式的一部分