我试图替换注释部分中没有的所有数字。以下是要修复的文件示例:
/* 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
但我只提取了每行的第一个数字,而不是以"/*"
开头。我如何扩展它以获得这些行的所有数字?
谢谢!
假设您的正则表达式引擎(您尚未告知(支持look behind
和look ahead
,则可以使用以下正则表达式:
(?<!^/*.*)(?:(?<=s)d+(?=s))+
正则表达式从使用negative look behind
开始,查找start of line
,然后是slash
和star
。
然后,它为White Space
创建一个新的negative look behind
,然后为任意数量的digits
,然后为White Space
创建一个negative look ahead
。该组为repeated any number of times
。
您需要设置global
和'multiline'
标志。
正则表达式跳过未被空白包围的数字(例如'id1'
(
基于Wiktor Stribiżew注释,我使用/*.*?*/(*SKIP)(*F)|-?bd+(.d+)?
提取数字,包括小数和负值。