我的目标是使用正则表达式实现多行unicode感知字符串清理。
我从这个正则表达式开始,它没有后看限制:
(?<=[[:blank:]]).*
然后,我已经找到了限制观察的方法如下:
(?!.{20,})(?<=[[:blank:]]).*
它适用于某些情况,但不是很稳定(link),因为字符串长度是不可预测的。
另外,拖尾逗号是不可取的,但我还没弄清楚如何使用正则表达式删除它,因为它是不可预测的(见测试用例)。
如何为此任务创建适当限制的lookbehind?我正在使用boost(pcre)式正则表达式。
测试用例:
在
РПÑАВÂРßÛÑ ÛÑРВßР ÛÑÛÑАÑÛ, 11.22 Ø.Á.
ÛÑРВЛÛÑВ ÛÑßВßДÛÑВßЛ РИÐРÛПÑÑВÛ 11.22 Ã.Ö
ВßÑÛВÂЛÛÑВ ÛÑВÂÛÑВЛß ßРßÂРÑВЛРÛÐßРВ, 11.22 Â.Ö.
ÛÑВÛÑВ ÛßÛßРÑВßРÐ ßТАÛ, 11.22 Ã.Ö.
РÐÑАВПРßÛÑ ÛÑРВßР ÛÑÛÑАÑÛ, 11.22 Ø.р.
ÛÑРВÂÛÑВ ÛÑßВßДÛÑВß РÂПРÛПÑÑВÛ 11.22 Ø.Á.
ВßÑÛВДЛÛÑВ ÛÑВЛÛÑВЛß ßРßЛРÑВЛРÛЛßРВ 11.22 Ø.Ö.
ÛÑВÛÑВ ÛßÛßРÑВßРÐ ßТАÛ, 11.22 Ï.Á.
停止
РПÑАВÂРßÛÑ ÛÑРВßР ÛÑÛÑАÑÛ
ÛÑРВЛÛÑВ ÛÑßВßДÛÑВßЛ РИÐРÛПÑÑВÛ
ВßÑÛВÂЛÛÑВ ÛÑВÂÛÑВЛß ßРßÂРÑВЛРÛÐßРВ
ÛÑВÛÑВ ÛßÛßРÑВßРÐ ßТАÛ
РÐÑАВПРßÛÑ ÛÑРВßР ÛÑÛÑАÑÛ
ÛÑРВÂÛÑВ ÛÑßВßДÛÑВß РÂПРÛПÑÑВÛ
ВßÑÛВДЛÛÑВ ÛÑВЛÛÑВЛß ßРßЛРÑВЛРÛЛßРВ
ÛÑВÛÑВ ÛßÛßРÑВßРÐ ßТАÛ
答案 0 :(得分:1)
答案 1 :(得分:0)
根据示例输出,我认为你需要提取任何Unicode序列,但不能提取拉丁字母(\p{L}
)或空格(\s
)从行的开头传播到第一个字符不在这堂课:
^[\p{L}\s]+