Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 当前面没有特定案例时,正则表达式捕获模式_Regex_Regex Negation - Fatal编程技术网

Regex 当前面没有特定案例时,正则表达式捕获模式

Regex 当前面没有特定案例时,正则表达式捕获模式,regex,regex-negation,Regex,Regex Negation,我有以下测试数据: 第400部分-Azerjahan Husbai 343股-18号遗产的执行人-Homaho Jurei 187-Shone Jumaja至448-Socsa Husmai遗产管理人股份 187-Shone Jumaja至445-Horo Te Fuka遗产管理人股份 我有这个正则表达式 ^.*#(?<legacyId>\d*).*$ 此处的捕获组始终捕获\d的最后一次出现* 因此,使用当前正则表达式捕获的组的当前结果集为 400 18 448 445 我想修改正

我有以下测试数据:

第400部分-Azerjahan Husbai 343股-18号遗产的执行人-Homaho Jurei 187-Shone Jumaja至448-Socsa Husmai遗产管理人股份 187-Shone Jumaja至445-Horo Te Fuka遗产管理人股份 我有这个正则表达式

^.*#(?<legacyId>\d*).*$
此处的捕获组始终捕获\d的最后一次出现* 因此,使用当前正则表达式捕获的组的当前结果集为

400 18 448 445 我想修改正则表达式,使结果集变为:

400 343 448 445 规则不应该只是捕捉第一次而不是最后一次 我想要的是捕获前面没有遗产的组


我怀疑我必须结合使用正向和反向前瞻?

您还没有指定使用哪种编程语言或正则表达式库。这是关键信息。没有它,我只能猜测您可以使用哪些功能

你给出的唯一重要线索是命名捕获的使用。自从你用了这个?语法而不是?P,这将您的正则表达式风格缩小到可能以下之一:

网 Perl 5.10+ PCRE 7+ 爪哇7+ Oniguruma 1.8.4+ Ruby 1.9+默认使用Oniguruma Regex不确定哪个版本开始支持这个 0.5版本的JavaScript+ JGsoft产品,如RegexBuddy 好吧,即使是这条线索也没有缩小范围。使您的正则表达式支持您的新规则的相关功能可能是负lookback,但并非上述所有功能都支持lookback,而且几乎所有功能都支持lookback中的不同功能子集

下面是一个使用固定长度负回溯的解决方案,以一种简单的方式尝试支持上述各种风格:

^.*#(?<!estate of #)(?<legacyId>\d+)
这样,您需要启用在换行时使“^”和“$匹配的标志。不能启用允许点匹配换行符的标志,也不能启用自由间距和行注释的标志。这些旗帜在不同的地方使用不同的名称和字母。出于次要的效率原因,我在符号后面加上了负数

请不要让人们猜测您使用的是什么编程语言和regex风格