leap 2020-03-03
正则表达式的() [] {}有不同的意思。
//() 是为了提取匹配的字符串
作用1: 把单独的项组合成子表达式,以便可以处理一个独立的单元那样用“|”、“*”、“+”、“?”等来对单元内的项进行处理。
例如:
1234 | // 可以匹配 字符串 java ,其后有没有 “script” 无所谓/java(script)?/// 可以匹配 "ef",也可 大专栏 正则中的[中以匹配 "ab"或"ef"一次或多次重复/(ab|cd)+|ef/ |
作用2: 在完整的模式中定义子模式,当一个正字表达式成功地和目标字符串相匹配时,可以从目标串中抽出和圆括号中的子模式相匹配的部分。
假设,我们正在匹配一个或多个小写字母后面跟随了一位和多位数字,则可以使用 /[a-z]+d+/
,假设我们只关心每个匹配尾部的数字,如果将模式的数字部分放在括号中/(/[a-z]+(d+)/)/
,就可以从检索到的匹配中抽取数字了。
作用3: 允许在同一正则表达式的后部引用前面的子表达式。;
表达式中有几个()
就有几个相应的匹配字符串。
(s*)
表示连续空格的字符串。