正则表达式是否需要“(”和“)”?
Regex are "(" and ")" necessary?
如果模式由多个组组成,我是否只需要使用 (
和 )
?
所以如果模式是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)$/"),
作为
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 -捕获组,例如this is (?:true|false)
.
我没有发现您删除了一些括号的表达式有任何问题。但是,如果您想检查它们,只需将它们放入显示优先级(例如 this one)的(在线)检查器中,然后检查结果 "explanation" 是否发生变化。用于正则表达式测试的各种 IDE 插件也有望为您提供类似的 树视图 。
请注意,您有时会使用边界匹配器(^
和 $
),有时则不会。我希望这些要么被使用,要么不被使用。
如果模式由多个组组成,我是否只需要使用 (
和 )
?
所以如果模式是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)$/"),
作为
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 -捕获组,例如this is (?:true|false)
.
我没有发现您删除了一些括号的表达式有任何问题。但是,如果您想检查它们,只需将它们放入显示优先级(例如 this one)的(在线)检查器中,然后检查结果 "explanation" 是否发生变化。用于正则表达式测试的各种 IDE 插件也有望为您提供类似的 树视图 。
请注意,您有时会使用边界匹配器(^
和 $
),有时则不会。我希望这些要么被使用,要么不被使用。