如果图案由多个组组成,我是否只需要使用(
和)
?
因此,如果模式为true|false
,则是否添加括号都没关系,对吗?再说一次,如果模式为POINT_PATTERN("\\((\\d+),(\\d+)\\)")
则确实有所不同,因为我想从中获取两个不同的值。
我可以写出我当前的模式吗:
NUMBER_PATTERN("(?!(0[0-9]))[0-9]+"),
BOOLEAN_PATTERN("(true|false)"),
STRING_PATTERN("(\\w+)"),
INTEGER_PATTERN("/^([+-]?[1-9]\\d*|0)$/"),
as
NUMBER_PATTERN("(?!0[0-9])[0-9]+"),
BOOLEAN_PATTERN("true|false"),
STRING_PATTERN("\\w+"),
INTEGER_PATTERN("^[+-]?[1-9]\\d*|0$");
没有任何损失?
我对NUMER_PATTERN
和INTEGER_PATTERN
尤其不确定。还有其他原因为什么我不应该这样做(不良的编码风格,...)?
是,默认为字符或字符类序列,它的优先级高于OR运算符|
。因此,如果序列的前面或后面没有任何内容(在true|false
的情况下清楚显示),则不需要它们。
但是,如果您想使用this is true|false
或"this is true"
的"this is false"
优先级将对"this is false"
失败,因此您需要对true|false
进行分组,例如使用non-captureing组,例如this is (?:true|false)
。
我看不到您删除了一些括号的表达式的任何问题。但是,如果要检查它们,则只需将它们放入显示优先级的(在线)检查器中即可(例如this one),然后检查结果“说明”是否发生了变化。希望用于regexp测试的各种IDE插件也可以为您提供类似的tree view。
[请注意,您有时使用边界匹配器(^
和$
),但有时没有。我希望这些将被使用或不被使用。