Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java转义正则表达式元字符和构造_Java_Regex - Fatal编程技术网

Java转义正则表达式元字符和构造

Java转义正则表达式元字符和构造,java,regex,Java,Regex,我试图从包含非元字符((,&)和元字符(([,]),{,},|)的字符串中形成正则表达式模式 问题是,我想(如何)识别任何可能是java模式元字符的字符,并使用“\\”对其进行转义,然后我可以用regex元字符*或+替换一些非元字符 e、 g.输入字符串=“%abc&xy[z,p)” 第一步输出(我需要帮助识别和转义所有元字符)“%abc&xy\\[z,p\\” 第二个setp输出(在这里我将进行自定义字符替换(此处不需要帮助))-“*abc.+\\[z,p\)” p、 我不认为Pattern.

我试图从包含非元字符(
(,&)
和元字符(
([,]),{,},|)的字符串中形成正则表达式模式

问题是,我想(如何)识别任何可能是java模式元字符的字符,并使用
“\\”
对其进行转义,然后我可以用regex元字符
*
+
替换一些非元字符 e、 g.输入字符串=“%abc&xy[z,p)” 第一步输出(我需要帮助识别和转义所有元字符)“%abc&xy\\[z,p\\” 第二个setp输出(在这里我将进行自定义字符替换(此处不需要帮助))-“*abc.+\\[z,p\)”


p、 我不认为
Pattern.quote()
Pattern.Literal
是这里的答案。到目前为止,我看到的唯一选择是拥有这些元字符的映射,并对照它检查每个字符。

可以在这里找到Java regexp模式:

您应该特别关注
\Q
\E
,它们设计用于转义大部分文本,而无需专门处理所有文本

如果我正确理解您的请求,您希望例如将像
MYCODE
这样的标记更改为
*
,那么更改可能是:

  • 在开头添加
    \Q
  • 在末尾添加
    \E
  • MYCODE
    替换为
    \E.*\Q
我自己没有在Java中测试这一点,但这与perl中的原理相同

因此,
匹配所有的{MYCODE开括号
变成
\Q匹配所有的{\E.*\Q开括号\E


您可能需要转义块内的任何
\
。对此不确定。

您能给我们一个未转义和转义字符串的示例吗?我理解示例请求,但不理解为什么问题不明显。无论如何,感谢Dirk的建议。如果您认为问题仍然不明确,这可能会奏效!@axiopisty听够了,让我知道,否则请撤销你所做的。