我正在尝试替换注释部分中未列出的所有数字。这是要修复的文件的示例:
/* 2018-01-01 06:00:55 : realtime(0.002) --status(10)-- ++numretLines(0)++ --IP(192.168.1.5) PORT(22)-- queryNo(2) comment[TO: Too much time] TYPE[QUERY 4.2] */
select count(*) from table where id1 = 41111 and id2 = 221144
GO
基本上,我想替换不以"/*"
开头的字符串中的数字。
我想出了以下正则表达式:/^(?!\/\*)(?:.+\K(\d+?))/gmU
但是我只能提取每行的第一个数字,而不以"/*"
开头。我如何扩展它以获取那些行的所有数字?
谢谢!
答案 0 :(得分:0)
假设您的正则表达式引擎(尚未告知)支持look behind
和look ahead
,则可以使用此正则表达式:
(?<!^\/\*.*)(?:(?<=\s)\d+(?=\s))+
正则表达式开始于使用negative look behind
,寻找start of line
,然后是slash
和star
。
然后,它为negative look behind
创建一个新的White Space
,然后创建任意数量的digits
,然后为negative look ahead
创建一个White Space
。该组为repeated any number of times
。
您需要设置global
和'multiline'
标志。
regex会跳过不被空格包围的数字(例如'id1'
)
答案 1 :(得分:0)
基于Wiktor Stribiżew的评论,我使用\/\*.*?\*\/(*SKIP)(*F)|-?\b\d+(\.\d+)?
提取了数字,包括小数和负值。