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听够了,让我知道,否则请撤销你所做的。