我想了解从遗留代码柔性规则,可以帮助:是什么符号s在弯曲的正则表达式
number [0-9]*['']s?[bdh]
什么是“”(两个单引号)是什么意思?这是否意味着一个单引号,第一个引号符号是后面提到的实际报价的转义符?我的印象是特殊字符需要用反斜杠标记,如[\']。如果''表示',那么使用反斜杠作为转义字符的正确方法是什么?
这里“s”符号的含义是什么?
你可以举一些例子,这两个正则表达式匹配吗?
我想了解从遗留代码柔性规则,可以帮助:是什么符号s在弯曲的正则表达式
number [0-9]*['']s?[bdh]
什么是“”(两个单引号)是什么意思?这是否意味着一个单引号,第一个引号符号是后面提到的实际报价的转义符?我的印象是特殊字符需要用反斜杠标记,如[\']。如果''表示',那么使用反斜杠作为转义字符的正确方法是什么?
这里“s”符号的含义是什么?
你可以举一些例子,这两个正则表达式匹配吗?
的Flex图案在manual都记录。
s
只是与字母 “S”
字符的括号内的序列,像[bdh]
,是一个字符类。它匹配单个字符,该字符是类中任何一个字符。大多数角色在角色类中使用时会失去其特殊含义。
'
在柔性模式中没有特殊含义;像s
,它只是匹配自己。并且重复角色类中的角色不起作用。所以['']
匹配一个单撇号,它可能已被简写为'
。但是,许多程序员的编辑认为撇号用于围绕字符串或字符文字,而单个撇号会导致语法突出显示失败。写作['']
是避免这种误解的一种方法。 (我个人认为最好找一个好的编辑器,而不是修改你的代码来补偿一个愚蠢的编辑器,但口味不同。)
s
仅表示s
。后缀问号使其成为可选项。因此,你的表达应相当于
number [0-9]*'s?[bdh]
感谢您的回答。另一个答案是相似的,但更详细,所以我接受了。 – R71