gpt4 book ai didi

regex - 后视模式

转载 作者:行者123 更新时间:2023-12-04 14:35:11 26 4
gpt4 key购买 nike

我的问题与lookbehinds有关,我想找到单词“this”之后的所有第一个数字,我有以下数据:

188282 这是一个数字 12345 和 54321 的例子
188282 这是一个数字 1234556 的例子
这是一个数字 1234556 的例子
187293 这是另一个数字 74893 和 83978 的例子

图案:

this is an example of a number \d+

输出:

188282 this is an example of a number 12345和 54321
188282 this is an example of a number 1234556
this is an example of a number 1234556
187293 这是另一个数字 74893 和 83978 的例子

为了匹配所有这些,我使用了一种更通用的方法,因为我知道我想要“this”一词之后的第一个数字

图案:

this[^\d]+\d+

输出:

188282 this is an example of a number 12345和 54321
188282 this is an example of a number 1234556
this is an example of a number 1234556
187293 this is another example of a number 74893和 83978

我现在想使用回顾,因为我不想在结果中包含部分模式。按照我的第一种方法:

图案:

(?<=this is an example of a number )\d+

输出:

188282 这是一个数字的例子 12345和 54321
188282 这是一个数字的例子 1234556
这是一个数字 1234556 的例子
187293 这是另一个数字 74893 和 83978 的例子

看来我到了那里,我想像以前一样介绍最后一个案例,所以我尝试了第二种方法。

图案:

(?<=this[^\d]+)\d+

输出:

188282 这是一个数字 12345 和 54321 的例子
188282 这是一个数字 1234556 的例子
这是一个数字 1234556 的例子
187293 这是另一个数字 74893 和 83978 的例子

不匹配任何东西
是否有可能在 lookbehinds 中有模式?我是否在尝试错误的方法来解决这个问题?有点长,但我想向您展示我到目前为止所做的尝试,而不是仅仅提出问题

提前致谢

最佳答案

是的,您可以在后视中使用模式,但在大多数正则表达式中您不能做的是具有可变长度的后视。换句话说,您不能在回顾中使用量词(但允许使用像 {n} 这样的固定量词)。但是某些正则表达式风格允许您使用交替 | 或有限的(如在 java 中)量词 {1,n}

对于 .net 语言,可变长度后视是允许的。

关于regex - 后视模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20994152/

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