多行正则表达式以匹配 space 分隔数据后的字符串

Multiline regex to match string after space-separated data

我的目标是使用正则表达式实现多行 unicode 感知字符串清理。

我从这个没有后视限制的正则表达式开始:

(?<=[[:blank:]]).*

然后,我找到了如下限制回溯的方法:

(?!.{20,})(?<=[[:blank:]]).*

它在某些情况下有效,但不是很稳定(link),因为字符串长度不可预测。

拖尾逗号也是不可取的,但我还没有弄清楚如何用正则表达式删除它,因为它是不可预测的方式(参见测试用例)。

如何为此任务创建适当的有限回顾?我正在使用 boost(pcre) 风格的正则表达式。

测试用例:

РПÑАВÂРßÛÑ ÛÑРВßР ÛÑÛÑАÑÛ, 11.22 Ø.Á.
ÛÑРВЛÛÑВ ÛÑßВßДÛÑВßЛ РИÐРÛПÑÑВÛ 11.22 Ã.Ö
ВßÑÛВÂЛÛÑВ ÛÑВÂÛÑВЛß ßРßÂРÑВЛРÛÐßРВ, 11.22 Â.Ö.
ÛÑВÛÑВ ÛßÛßРÑВßРÐ ßТАÛ, 11.22 Ã.Ö.
РÐÑАВПРßÛÑ ÛÑРВßР ÛÑÛÑАÑÛ, 11.22 Ø.р.
ÛÑРВÂÛÑВ ÛÑßВßДÛÑВß РÂПРÛПÑÑВÛ 11.22 Ø.Á.
ВßÑÛВДЛÛÑВ ÛÑВЛÛÑВЛß ßРßЛРÑВЛРÛЛßРВ 11.22 Ø.Ö.
ÛÑВÛÑВ ÛßÛßРÑВßРÐ ßТАÛ, 11.22 Ï.Á.

出来

РПÑАВÂРßÛÑ ÛÑРВßР ÛÑÛÑАÑÛ
ÛÑРВЛÛÑВ ÛÑßВßДÛÑВßЛ РИÐРÛПÑÑВÛ
ВßÑÛВÂЛÛÑВ ÛÑВÂÛÑВЛß ßРßÂРÑВЛРÛÐßРВ
ÛÑВÛÑВ ÛßÛßРÑВßРÐ ßТАÛ
РÐÑАВПРßÛÑ ÛÑРВßР ÛÑÛÑАÑÛ
ÛÑРВÂÛÑВ ÛÑßВßДÛÑВß РÂПРÛПÑÑВÛ
ВßÑÛВДЛÛÑВ ÛÑВЛÛÑВЛß ßРßЛРÑВЛРÛЛßРВ
ÛÑВÛÑВ ÛßÛßРÑВßРÐ ßТАÛ

根据示例输出,我认为您需要提取任何 Unicode 序列,但不提取从行首开始传播的拉丁字母 (\p{L}) 或空格 (\s)第一个字符不在此 class:

^[\p{L}\s]+

演示:https://regex101.com/r/4rFuCC/1

你也可以匹配不需要的部分:

\s*[,\d].*

然后在您的环境中用任何东西替换它们(或删除它们)。

Live demo