gpt4 book ai didi

c# - 如何使用正则表达式提取所有不在引号中的数字?

转载 作者:太空宇宙 更新时间:2023-11-03 12:57:58 25 4
gpt4 key购买 nike

我需要提取字符串中所有不在引号中且不属于变量名的数字。

在示例中,我有以下代码:

const VariableA1 = '5;0;5;5;0;5;3;3;7;7';
const M65 = true;

type MyType = record
H: array[0..27] of integer;
S: integer;
end;

function B(sep: Char) : integer;
var i: integer;
begin
i:= 1;
return sep[0];
end;

我自己解决了,代码如下:

(?<![a-zA-Z])[0-9]+(?=([^']*'[^']*')*[^']*$)

但是 regex101 抛出超时错误——灾难性的回溯。此模式的评估时间为 8 秒。

有更好的方法吗?你能帮我优化这个模式吗?

最佳答案

\b[0-9]+(?=(?:[^']*'[^']*')*[^']*$)

您可以简单地使用它。查看演示。

https://regex101.com/r/gT6vU5/4

您可以使用更快的方法

\b[0-9]+(?=(?>(?:[^']*'[^']*')*)[^']*$)

^^

利用原子组。查看演示。

https://regex101.com/r/gT6vU5/6

编辑:

如果您确定引号不会跨越多行,您可以使用

\b[0-9]+(?![^\n]*')

查看演示。

https://regex101.com/r/gT6vU5/5

关于c# - 如何使用正则表达式提取所有不在引号中的数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33255219/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com