当前位置: 首页 > 知识库问答 >
问题:

转义(在正则表达式中)

毋树
2023-03-14

我正在搜索正则表达式-"。(冲突的副本。"。我为此写了以下代码

String str = "12B - (conflicted copy 2013-11-16-11-07-12)";
boolean matches = str.matches(".*(conflicted.*");
System.out.println(matches);

但我有个例外

异常在线程"main"中java.util.regex.Pattern Syn的异常:索引15附近的未关闭组。(

我知道编译器认为是模式组的开始。我试图通过添加\(来逃避),但这不起作用。

有人能告诉我怎么逃走吗?

共有3个答案

纪秋月
2023-03-14

在正则表达式中,通过在前面添加反斜杠,可以安全地转义所有字符。

请记住,在大多数语言中,包括C#、PHP和Java,反斜杠本身也是本机转义,因此需要在非文字字符串中转义,因此需要输入"myText\\("...

在正则表达式中使用反斜杠可能需要在语言级别和正则表达式级别(“\\\\\”)对其进行转义:这将“\\\”传递给正则表达式引擎,正则表达式引擎将其解析“\\”本身。

罗飞宇
2023-03-14

(在regex中是元字符,这意味着组的开始,它需要用关闭)。如果你想让裁判引擎把它当成简单的文字,你需要逃离它。您可以通过在它之前添加\来实现它,但是由于\也是String中的元字符(例如用于创建像"\n""\t"这样的字符),您需要转义它以及看起来像"\\"。所以试试吧

str.matches(".*\\(conflicted.*"); 

其他选项是使用字符类来转义

str.matches(".*[(]conflicted.*"); 

您还可以在需要像这样转义的零件上使用Pattern.quote()

str.matches(".*"+Pattern.quote("(")+"conflicted.*"); 

或者简单地环绕部分,其中所有字符都应该以文字形式与"\\Q""\\E"一起表示引用的开始和结束。

str.matches(".*\\Q(\\Econflicted.*"); 
通飞尘
2023-03-14

转义由\完成。在Java中,\写为\1,因此您应该转义将是\()。

附带说明:最好看看返回文字模式String的Pattern#index。对你来说,这没什么帮助,因为你不想逃避所有的特殊角色。

1,因为前面带有反斜杠(\)的字符是转义序列,对编译器具有特殊意义。

 类似资料:
  • 昨天,我需要向正则表达式添加一个文件路径,创建一个如下所示的模式: 一开始正则表达式不匹配,因为包含几个正则表达式特定的符号,如 或 。作为快速修复,我将它们替换为 和 . 与 . 然而,我问自己,是否没有一种更可靠或更好的方法来清除正则表达式特定符号中的字符串。 Python 标准库中是否支持此类功能? 如果没有,您是否知道一个正则表达式来识别所有正则表达式并通过替代品清理它们?

  • 转义字符串以在正则表达式中使用。 使用 String.replace() 来转义特殊字符。 const escapeRegExp = str => str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); escapeRegExp('(test)'); // \\(test\\)

  • 问题内容: 当匹配某些字符(例如换行符)时,可以使用正则表达式“ \\ n”或仅使用“ \ n”。例如,以下将字符串拆分为行数组: 但是以下内容同样适用: 我的问题: 上面两个是 完全 一样地工作,还是有细微的差别?如果是后者,能否举个例子,说明您得到不同的结果? 还是仅在[可能/理论]表现上有所不同? 问题答案: 在当前情况下没有区别。通常的字符串转义序列是在单个反斜杠的帮助下形成的,然后有效的

  • 问题内容: 我想使用来自用户的输入作为正则表达式模式来搜索某些文本。它可以工作,但是我该如何处理用户在正则表达式中放置有意义的字符的情况?例如,用户要搜索:正则表达式引擎会将(s)分组。我希望它像对待字符串一样对待它。我可以replace在用户输入上运行并将和 替换,但是问题是我将需要对每个可能的正则表达式符号进行替换。你知道更好的方法吗? 问题答案: 使用此功能: 4.2.3 re模块内容 转义

  • 问题内容: 我认为这是一个简单的问题。 我正在尝试使用正则表达式在JavaScript中搜索另一个字符串中某个字符串的出现,如下所示: 由于角色原因,这不起作用。…我尝试使用进行转义,但这也不起作用。还有另一种使用字面方式代替特殊字符的方法吗? 问题答案: 您需要用两个反斜杠将其转义

  • 问题内容: 我正在尝试在另一个字符串中替换字符串“ []”的第一个匹配项: aString.replaceFirst(“ []”,“等等”); 我收到错误:java.util.regex.PatternSyntaxException:索引1 []附近的未封闭字符类 [和]显然是元字符,但是当我尝试使用\来转义它们时,eclipse抱怨说这不是有效的转义序列。 我看过但找不到,我想念什么? 谢谢 问