逃离" (引号)在Java中使用正则表达式时的char

时间:2017-12-09 01:41:48

标签: java regex

在Java中使用Regex时,我有一个关于转义" 字符的问题。我正在对HTML转换器进行降价,我想通过带有图像标签的字符串进行解析。我正在使用正则表达式来查找引号符号("")。因此,例如,在解析时:

示例降价输入

![circles and squares](images/mysketch.jpg "My first sketch") 

我想检测" " (引号)并将 我的第一个草图 部分字符串捕获到一个组中。

示例HTML输出

<img src="images/mysketch.jpg" alt="circles and squares" title="My 
first sketch">

因此,基本上,这就是转换器要输出的内容。

以下是我用来执行此操作的代码:

public String parseString(String input){
   Pattern image = Pattern.compile("(.*?)!\\[(.*?)\\]\\((.*?)\\)(.*)");

   Matcher m = list.matcher(input);

   //image detection
   m = image.matcher(input);
   if (m.matches()) {
       String ret = "";
       for (int i = 0; i < m.groupCount(); i++) {
           ret += m.group(i+1);   
       }
           return parseString(m.group(1)) + translateImage(m.group(2), 
                  m.group(3), m.group(4)) + parseString(m.group(5));
   }

但是当我尝试将符号添加到正则表达式时,它结束了我想要关闭表达式的行,如下所示。

Pattern image = Pattern.compile("(.*?)!\\[(.*?)\\]\\((.*?)"\\)(.*)");

tl; dr - 我想知道是否有任何办法逃避&#34;在Java中使用Regex时的char?任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:0)

你只需要一个Java字符串文字转义....

 Pattern image = Pattern.compile("(.*?)!\\[(.*?)\\]\\((.*?)\"\\)(.*)");