正则表达式随机匹配而不是Java中的引号

时间:2016-07-04 19:41:33

标签: java regex

我正在用Java编写程序,使用正则表达式,并且遇到了错误。我想做的,基本上是编写一种编程语言,并逐行解析。我出错的地方,就是它试图找到任何字符串。问题是,我必须按照标识符,字符串,然后是整数的顺序,但我可以让标识符找到字符串。字符串是通过在它们周围加上双引号来定义的。这是我有测试的地方,我的表达式是here,或者在这里,如果你不想去链接:

[^"]([^\W][a-zA-Z0-9]+)[^"]

我无法显示我的Java代码,因为它是我所有的编程方式。它应该只是表达式,就是这样。

1 个答案:

答案 0 :(得分:1)

如果您能够更详细地解释您想要匹配的内容,将会很有帮助。例如。给出一些示例文本以及您的表达式当前为它们输出的内容。

目前我认为您正在尝试匹配字符串"所包围的文字。例如foofoo"text123"barbar,您所需的输出为text123

如果在Java中定义正则表达式,则需要转义"之类的特殊字符。这是您提供的正则表达式的Java可用版本:

Pattern pattern = Pattern.compile("[^\"]([^\\W][a-zA-Z0-9]+)[^\"]");

然后,您可以将Pattern对象与Matcher对象一起使用来查找文本。这是Pattern的{​​{3}}。

以下Pattern匹配"包围的文字:

Pattern pattern = Pattern.compile("\"[^\"]*\"");