比如我要匹配[0-9]+,但首尾的不匹配(首尾的连续数字都忽略),应该如何写呢?
例:123abc45d678efg90,应该匹配到 45 和 678
1
ryd994 2018-06-07 08:26:12 +08:00 via Android
头尾用^[0-9]*先过滤掉
|
2
ryd994 2018-06-07 08:27:23 +08:00 via Android
呃,^[0-9]+ 和 [0-9]+$
|
3
ryd994 2018-06-07 08:32:03 +08:00 via Android
如果你是要 group capture 的话
^[0-9]*[^0-9]+([0-9]+)[^0-9]+[0-9]*$ 这样大概能行 |
4
eggshell 2018-06-07 08:39:15 +08:00
零宽断言可以做到 (?<!^)(?<!\d+)\d+(?!\d+)(?!$)
不过 应该有更好的写法吧。。 |
5
zynlp 2018-06-07 08:39:32 +08:00 via iPhone
用断言吧
|
6
Removable 2018-06-07 08:43:29 +08:00
零宽断言应该可以的,不过如果你是用在 js 里的话,那除了 Chrome 外的浏览器都不支持后发断言
|
7
eggshell 2018-06-07 08:43:52 +08:00
(?<!^\d*)\d+(?!\d+)(?!\d*$)
|
8
liberize 2018-06-07 14:32:39 +08:00
|
9
lihongming OP @liberize 多谢,我对正则没学那么深入,这我都看不懂😂
|