Java 点语言标识符的正则表达式

Java 点语言标识符的正则表达式,java,regex,groovy,dot,Java,Regex,Groovy,Dot,对标识符有一些规则。我想制作一个正则表达式,它符合groovy中的第一个正则表达式。规则是 任何字母[a-zA-Z\200-\377]字符、下划线“\u”或数字[0-9]的字符串,不以数字开头 我想做这样的事 [_a-zA-Z\200-\377][_0-9a-zA-Z\200-\377]* 但是groovy抱怨\200-\377。如何使这个正则表达式与groovy兼容 编辑:一些附加代码 String getId(String id) { if(id ==~ /[_a-zA-Z\200

对标识符有一些规则。我想制作一个正则表达式,它符合groovy中的第一个正则表达式。规则是

任何字母[a-zA-Z\200-\377]字符、下划线“\u”或数字[0-9]的字符串,不以数字开头

我想做这样的事

[_a-zA-Z\200-\377][_0-9a-zA-Z\200-\377]*
但是groovy抱怨\200-\377。如何使这个正则表达式与groovy兼容

编辑:一些附加代码

String getId(String id) {
    if(id ==~ /[_a-zA-Z\200-\377][_0-9a-zA-Z\200-\377]*/) {
        return id
    } else {
        return "\"$id\""
    }
}
错误呢

Illegal/unsupported escape sequence near index 9
[_a-zA-Z\200-\377][_0-9a-zA-Z\200-\377]*
编辑2:这是斯波克测试

@Unroll('"#id" converts to "#expected"')
def 'ids are converted to dot ids'() {
    expect:
    graphviz.getId(id) == expected

    where:
    id          | expected
    '_'         | '_'
    'a'         | 'a'
    'A'         | 'A'
    'a9'        | 'a9'
    ' '         | '" "'
    '234'       | '"234"'
    'two words' | '"two words"'
}

以下内容适用于Groovy 2.4.9:

def regex = "[_a-zA-Z\200-\377][_0-9a-zA-Z\200-\377]*"

assert '_aB' ==~ regex
assert '_123AB' ==~ regex

assert 246 == (('ö' as char) as int) 
assert 252 == (('ü' as char) as int) 
assert '_aMötleyCrüe123' ==~ regex

我用更多信息更新了这个问题。当我从斜线字符串切换到普通字符串时,它工作了。谢谢你的帮助。我相信groovy依赖Java的正则表达式来支持正则表达式。你试过\0200-\0377了吗?我猜\200-\377是八进制值,就像在C/C++中一样?