2

我希望有一个正则表达式方法来查找 java 接受的确切字符串模式。

我现在有正则表达式:

STRINGS = \"[a-zA-Z0-9" "]*\"

哪个与以下字符串匹配:

"this is a string"

"thisisstring"

但它不支持转义字符,所以字符串如下:

"this is a sting \"\""

失败。另请注意,此字符串是:

"this is a sting \"\"

无效。有什么方法可以让我在正则表达式中捕获这些条件?

提前致谢。

4

2 回答 2

1

您需要\\\\在您的正则表达式字符串中包含 a (在方括号之间)。\\是转义Java字符串中的 \ ,您需要 2 ,\\因为您需要转义正则表达式中的反斜杠。

于 2012-10-17T18:45:14.030 回答
0

很难说出你的字符串是什么,因为它们是伪代码。但这应该匹配所有 apha-numerics 和双引号:

String pattern = "[a-zA-Z0-9\" ]*";
Pattern.matches(pattern, "\"this is a sting \"");

这应该匹配所有字母数字、双引号或以下组合\"

String pattern = "([a-zA-Z0-9\" ]|\\\\\")*";
System.out.println(Pattern.matches(pattern, "\"this is a sting \\\""));

这是因为您必须\为字符串转义一次,为正则表达式解析器转义一次(因此它最终\连续 4 个以匹配\字符串中的 a)。

于 2012-10-17T19:00:57.993 回答