在Antlr4语法中,我需要匹配正则表达式拉丁语,西里尔语,波兰语和希腊字母以及特殊字符的帮助。这是我有:Antlr4匹配西里尔字母,拉丁字母,波兰字母和希腊字母以及特殊字符?
STRING: ['][\p{L} 0-9\[\]\^\$\.\|\?\*\+\(\)\\~`\[email protected]#%&\-_+={}""<>:;,\/°]*['];
所以我说,一个String
的起始和结束''
。里面我可以有任何字母(\p{L}
),数字和特殊字符,从'
除外。我已经在regex101.com上测试过了,它正是我想要的。但在Antlr4中它不起作用。相反,我得到的最接近的事是:
['][a-zA-Z0-9 \[\]\^\$\.\|\?\*\+\(\)\\~`\[email protected]#%&\-_+={}""<>:;,\/°]*[']
但问题是,像'Ąłćórżnęł'
不会在我的语言被接受,但它应该是。
我在Antlr4做错了什么或者是一个限制?我如何设法让它在Antlr4中工作?字符串是Lexer规则。
谢谢,但如何在Antlr4中的正则表达式中,我允许字符串中的所有内容除了像''这样的字符。但我说一个字符串以'?开始并以'结束? – Devid
@Devid检查我编辑的答案 –
谢谢。在Antlr4中,我是这样做的:STRING:['](〜['] |'\'\'')* [']; – Devid