为什么下面的正则表达式 (?<=[01]?\d\d?).* 不合法?

因为格式转换有问题,导致IP地址的内容都变成如下形式:
O139&“.1.1.1"
O39&“.1.1.1"
O3&“.1.1.1"
想把文本中的O、&""都去掉,只保留IP地址,有什么办法吗?我试了几下,其中有几个问题想问下:
1、reg exp:
(?<=[01]?\d\d?).*
为啥显示不合法,在(?<=exp)的格式中,exp部分不能出现“?”吗?
2、reg exp:
(?<=3).*
可以匹配第三行的&“.1.1.1"部分,又想把O也匹配进去,但是reg exp:
O(?<=3).*
为啥显示不合法?
3、reg exp:
O(?=\d+)
可以匹配最前面的O,但是reg exp:
O(?=\d+)(?<=\d+)&"
显示不合法,并不能匹配O和&",把数字跳过,这是为什么?
4、reg exp:
(?<=\d+)
或者
(?<=\d+).*
为啥都显示不合法?

这个问题,主要就是希望能跳过数字部分,把其他的字符删掉,但又不能用简单的^[0-9]来过滤数字,因为真正的文本中还有其他格式,比如abc139abc这样的,最好是能精准过滤掉这些数字。不知有没有什么办法?
最新回答
矮女是萌妹

2024-11-06 00:50:55

什么乱七八糟的

使用正则表达式
O(\d+)&“(.*?)\"
然后替换为
$1$2
不就行了
醉不成欢

2024-11-06 04:14:17

(?<=) 反向预搜索功能 是有使用环境限制的。

如js解析引擎就不能解析反向预搜索,java环境下jdk版本低于1.6也不能正确解析。
σ你眼中ノ起风〃)

2024-11-06 08:30:20

用的哪个流派的正则表达式啊?