java - 需要正则表达式 : It should match for following patterns

标签 java regex

有效:

  1. ((int)10)
  2. (int)10
  3. ((char)((x+y)&1))
  4. ((int *)1)

无效:

  1. (a-b)
  2. (a&=b)
  3. 一个
  4. ((a))

最佳答案

(平衡)括号表达式的语言是非正则,即,您不能编写匹配此类字符串的正则表达式。

参见 SO question: Why are regular expressions called "regular" expressionsWikipedia: Regular Languages .

您需要使用更强大的解析技术,例如 CFG,例如 ANTLR .

您可以从以下内容开始:

CastedExpression ::= Cast Expression | LPAR CastedExpression RPAR
Cast             ::= LPAR Type RPAR
Expression       ::= Sum | Product | Litteral | LPAR Expression RPAR | ...
Type             ::= char | int | Type ASTERISK | ...

(如果您发现任何明显的改进,请随时编辑上面的语法)。

关于java - 需要正则表达式 : It should match for following patterns,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3903965/

相关文章:

java - 仅在空格或破折号上拆分字符串。 Java小程序

java - 在回调管理器上获取空指针异常

regex - 在 Powershell 中使用函数替换

php - 如何使用正则表达式搜索字符串是否至少包含列表中的一个单词?

c# - 这两个正则表达式术语是否会使用 C# isMatch() 方法找到相同的匹配项?

java - ArrayList 或任何其他优雅的解决方案?

java - 使用 16 位像素数据在 Java 中创建图像

java - 从 servlet 向 java 类发送参数

javascript - 用 javascript 替换 HTML 图像名称

python重新匹配 "space at the end of string"