使用正则表达式从不以注释符号开头的行中提取数字



我试图替换注释部分中没有的所有数字。以下是要修复的文件示例:

/* 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 behindlook ahead,则可以使用以下正则表达式:

(?<!^/*.*)(?:(?<=s)d+(?=s))+

正则表达式从使用negative look behind开始,查找start of line,然后是slashstar

然后,它为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+)?提取数字,包括小数和负值。

最新更新