正则表达式

c++中的正则表达式在<regex>中,位于命名空间std中,使用函数regex_match进行匹配,使用方法:

regex_match(const char*,regex);

java中的正则表达式在java.util.regex中。


正则表达式:


正则表达式中的各种符号:

\ 转义字符。

\n 表示换行 \x0a,\f 表示换页符号 \0x0c,\t 表示制表符 \x09,\r 表示回车 \x0d,\\ 表示 \。
^ 表示行首。

 ^Hello 表示匹配行首、而不是任意的 Hello。

$ 表示行尾。

 done$ 表示匹配行尾、而不是任意的 done。
* 表示前面的符号或子表达式匹配 0 次或多次。

 zo* 可以匹配 "z" 和 "zoo"。* 等价于下面介绍的 {0,}。
+ 表示前面的符号或子表达式匹配 1 次或多次。

zo+ 可以匹配 "zo" 和 "zoo",但是不能匹配"z"。+ 等价于下面介绍的 {1,}。
? 表示前面的符号或子表达式匹配 0 次或 1 次。

 如 do(es)? 可以匹配单词 "do" 中的 "do" 或者单词 "does"。? 等价于下面介绍的 {0,1}。
{n}{n,}{n,m} n 和 m 都是非负的整数(分别为上下限),表示前面的符号或子表达式匹配指定次数。

  o{2} 表示两个连续的 o(如 "food")。o{2,} 表示两个以上的 o(如 "fooood")。 o{1,3} 表示一到三个 o(如 "fod"、"food")

. 匹配除 "\n" 之外的所有单个符号。

比如 f.*d 表示一行中包含字符f和d的内容(无论它们之间是什么内容),如 "friend"。
x|y 匹配 x 或 y。

 z|food 匹配 "z" 或 "food",而 '(z|f)ood' 匹配 "zood" 或 "food"。括号用于改变运算优先级。
[xyz] 一个字符集合。表示匹配集合中的任何一个符号。

 [abc] 可以匹配 a、b、c 中的任何一个。
[^xyz] 字符集合的补集。

 [^abc] 可以匹配a、b、c 以外的字符。
[a-z] 字符范围。

 [a-z] 可以匹配任何 'a' 到 'z' 之间的小写字符。
[^a-z] 字符范围的补集。

 [^a-z] 可以匹配任何非小写的字符。
\b 匹配单词边界。

'er\b' 可以匹配 "never" 中的 'er',但不能匹配 "verb" 中的 'er'。
\B  匹配非单词边界。 
'er\B' 可以匹配 "verb" 中的 'er',但不能匹配 "never" 中的 'er'。
\d 匹配一个数字字符。 等价于 [0-9]。
\D  匹配一个非数字的字符。等价于 [^0-9]。
\s  匹配任何空白字符。等价于 [\n\r\t\0x20](空白字符共有四种)。
\S 匹配任何非空白字符的字符。 等价于 [^\n\r\t\0x20]。
\w 匹配任何单词符号,包括下划线。等价于 [A-Za-z0-9_ ]。
\W  匹配任何非单词符号。 等价于 [^A-Za-z0-9_ ]。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值