正则表达式 - 查找最大可能的匹配项,如果没有前面的单词检查或什么都没有找到

Regex - Find biggest possible match, which would have been found without preceding word checking, or nothing

我不知道确切的术语,因此很遗憾找不到适合我的具体情况的解决方案。

我知道如何找到一个单词,它不是由使用否定前瞻的另一个预定义单词进行的。 Example

我的目标是只匹配最大可能的短语,匹配时不检查前面的单词。如果他们在逗号之后,我不想要该组中的任何匹配项。如果前面没有逗号,我希望所有这些都在一个短语中。

我的基本想法是执行正常的正则表达式并再次检查匹配项前面是否有逗号。可以一次完成吗?

示例(愚蠢的一个): 房子 566 819 , 94841 681 很好 4571 68484 81981

理想输出:

我希望所有数字都匹配,不直接跟在逗号后面(所需匹配项为粗体),作为一个大匹配项。

我当前的这种情况的正则表达式如下所示:

\b(?!,)\s((\d+\s*)+)

但是它也找到了 681,因为它是一个数字并且前面没有逗号。 这对我来说是一种不受欢迎的行为。

我希望我对我的问题的解释足够好。 有什么方法可以实现我的目标吗?

正则表达式

(?<=[^,\d]\s|^)(\d+(?:\d+\s*)+)

将匹配前面紧跟 ^(行首)或除 [,\d]\s(逗号或数字后跟空格)之外的任何内容的最长数字和空格组合。

这是您要找的东西吗?我很难理解你的问题,所以我基于:

I want all numbers to be matched, which do not directly follow a comma