【发布时间】:2026-01-10 05:10:01
【问题描述】:
我有一个用户提供的字符串,然后我需要将其转换为正则表达式,其中他们的字符串被视为文字,然后我在末尾附加一个预先编写的正则表达式。
本质上是一种表达“用户提供了什么,然后是这种模式”的方式。
这让我觉得我可能需要清理用户提供的字符串,以转义元字符。
例如,这是我尝试过的
\\ Replace "\" with "\\"
String rE = userText.replaceAll("\\", "\\\\");
\\ Replace . with \.
rE = rE.replaceAll(".", "\\.");
但是,当匹配 \ 转义时,这会失败并显示以下消息
Execution aborted because of unhandled exception:
java.util.regex.PatternSyntaxException: Unexpected internal error near index 1
\
^ at java.util.regex.Pattern.error(Pattern.java:1725)
at java.util.regex.Pattern.compile(Pattern.java:1478)
有没有更简单的方法来做到这一点?我怀疑有一种内置方法可以将潜在的正则表达式转换为文字,但我找不到它。
我看过类似的问题,但似乎没有人愿意将用户输入的字符串视为文字。
【问题讨论】: