【问题标题】:Identify and escape double quote, single quote and comma in Java [duplicate]在 Java 中识别和转义双引号、单引号和逗号 [重复]
【发布时间】:2014-10-14 21:56:47
【问题描述】:

对不起,我找不到任何有用的东西,因此我问这个问题。我有一个基本字符串,它可能有英尺(“),英寸(')或逗号(,)。我想做的就是在进一步处理之前识别它们并转义它们。正则表达式没有任何运气,你可以告诉我还不太好。需要帮助。非常感谢!

【问题讨论】:

  • 你为什么要逃避他们?您是否尝试过使用String#replace 方法?
  • 您所说的“没有使用正则表达式...”是什么意思?您的意思是您尝试了 \' 并且您的正则表达式失败了?你试过用双反斜杠转义吗?
  • 看起来你没有任何代码,所以可能是问题所在。
  • 撇号用于英尺,双撇号用于英寸。它们通常用单引号和双引号以 ASCII 表示。你在你的问题中把它们倒过来了。

标签: java regex


【解决方案1】:

有人在您的 cmets 中暗示过它,但它并不完全正确,因为 String#replace 只需要一个字符,并且您希望提供多个用于替换。

假设你有一些函数 foo() 返回一些没有正确转义的正则表达式,相对于 "\"" 字符或 "\'" 字符:

String regexp = Bar.foo();
regexp = regexp.replaceAll("(\\\"|\\\')", "\\\\$0");
Pattern yourPatternName = Pattern.compile(regexp);

一点解释:在Java中,你需要对某些特殊字符进行转义,比如n表示换行符('\n'),或者t表示制表符('t')。例如,由于您已经在转义它们,它们不再是文字字符 '\' + 'n'。因此,您需要再次转义它们,这样在编译正则表达式时,Pattern#compiler 将看到两个字符“\n”而不是单个字符,即换行符。要转义 '\n' 字符,您当然需要放入一个新的 '\' 字符。由于我们正在执行 java.lang.String,因此我们仍然需要再次转义该斜线。

至于逗号,您无需转义。您只需要转义特殊字符。有关 Pattern 识别的列表,您可以在此处查看:

http://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html

【讨论】:

    猜你喜欢
    • 2012-12-27
    • 1970-01-01
    • 2020-06-13
    • 2016-12-17
    • 2011-06-13
    • 2013-06-30
    • 1970-01-01
    • 2013-08-09
    • 2012-05-28
    相关资源
    最近更新 更多