Java Regex匹配“字符串”

时间:2013-02-22 14:22:58

标签: java regex lexical-analysis

我正在从头开始创建一个词汇,我正在进入匹配(")[\\w]+(")的部分。 我有这个正则表达式^(\")[\\w]+(\")$,但它不会捕获字符串。

SSCCE:

Map<String, String> lexicalMap = new HashMap<>();
// add all regex to `lexicalMap` via `lexicalMap.put([regex], [tokentype])`

// Tokenize the string format of the syntax to `List<String> tokens`
// List<String> tokens contains ["string", "data", "=", "test"] on the syntax: string data = "test"
for(String element : tokens) {
    for(String regex : lexicalMap.keySet()) {
        if(element.matches(regex))
            System.out.print(lexicalMap.get(regex) + " ");
    }
}
System.out.println();

REGEXs:

identifier = ^[\\w]+$
operator = ^(\\=)$
string = ^(\")[\\w]+(\")$ // THE PROBLEM
keyword = ^(string)$

以下是我关注的案例输入/输出:

INPUT:

"test"
""
test
string data = "test"

输出:

string
string
identifier
keyword identifier operator string

更新时间:2013年2月22日

  • 添加了SSCCE细分。

1 个答案:

答案 0 :(得分:1)

我不知道发生了什么,但在将正则表达式从^(\")[\\w]+(\")$更改为^(\")[\\w]*(\")?$后,它才能正常工作。

相关问题