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
在Java中识别和转义双引号、单引号和逗号_Java_Regex - Fatal编程技术网

在Java中识别和转义双引号、单引号和逗号

在Java中识别和转义双引号、单引号和逗号,java,regex,Java,Regex,对不起,我找不到任何有效的,因此我问这个问题。我有一个基本字符串,可以是英尺(“)、英寸(')或逗号(,)。我所要做的就是在进一步处理之前识别并转义它们。对正则表达式没有任何运气,因为您可以看出我还不擅长它。需要帮助。非常感谢!有人在您的评论中暗示了这一点,但它并不完全正确,因为字符串#替换只需要一个字符,并且您希望提供多个字符r替换 假设您有一个函数foo(),该函数返回一些未正确转义的正则表达式,与“\”字符或“\”字符有关: 一点说明:在Java中,需要转义某些特殊字符,例如n表示换行符(

对不起,我找不到任何有效的,因此我问这个问题。我有一个基本字符串,可以是英尺(“)、英寸(')或逗号(,)。我所要做的就是在进一步处理之前识别并转义它们。对正则表达式没有任何运气,因为您可以看出我还不擅长它。需要帮助。非常感谢!

有人在您的评论中暗示了这一点,但它并不完全正确,因为字符串#替换只需要一个字符,并且您希望提供多个字符r替换

假设您有一个函数foo(),该函数返回一些未正确转义的正则表达式,与“\”字符或“\”字符有关:

一点说明:在Java中,需要转义某些特殊字符,例如n表示换行符('\n'),或t表示制表符('t')。由于您已经在转义它们,因此它们不再是文本字符“\'+”n”,例如。因此,您需要再次对它们进行转义,这样在编译正则表达式时,模式编译器将看到两个字符“\n”,而不是单个字符,即换行符。当然,要转义'\n'字符,您需要放入一个新的'\'字符。因为我们正在做一个java.lang.String,所以我们仍然需要再次转义这个斜杠

至于逗号,你不需要逃避它。您只需要转义特殊字符。有关模式识别的模式的列表,您可以在此处查看:


你为什么要逃离他们?您是否尝试过使用
String#replace
方法?您所说的“在正则表达式方面没有任何运气…”是什么意思?您的意思是您尝试了\'而您的正则表达式失败了吗?你试过用双反斜杠转义吗?看起来你没有任何代码,所以可能这就是问题所在。素数符号用于英尺,双素数符号用于英寸。它们通常用ASCII单引号和双引号表示。在你的问题中,你把它们倒过来了。
String regexp = Bar.foo();
regexp = regexp.replaceAll("(\\\"|\\\')", "\\\\$0");
Pattern yourPatternName = Pattern.compile(regexp);