【发布时间】:2015-05-18 01:14:06
【问题描述】:
我正在做一个附带项目(尝试学习正则表达式并在一般解析方面做得更好)并尝试编写一个函数来验证字符串在特定语法下是否有效。语法如下:
statement -> delimeter token
delimeter -> / or -
token -> name ([check])* (delimeter token)?
check -> token
@id="..."
我已经为上面的每一个(除了token)写出了正则表达式,它们写在下面。但是,当我尝试写出令牌正则表达式时,我意识到它依赖于自身(递归)。我不太确定如何编写这个正则表达式,或者这是否是正确的方法,因为检查可能会非常深入。有没有更好的方法来验证字符串是否可以用语法表示?如果没有,我该如何使用正则表达式?
String delimeter = "/|-";
String name = "((?i)\\A[a-z][_a-z\\d\\-\\.]*){1}";
String checkToken = would just be equal to token;
String checkID = "(?i)\\A\\s*@id\\s*=\\s*\".*\"\\s*\\Z";
我正在使用 String.matches 调用来查看字符串是否与正则表达式匹配,现在只检查较小的内容,例如名称是否正确。
【问题讨论】:
标签: java regex validation parsing