我正在尝试为我被要求做的工作制作一个正则表达式,但我没有运气让它足够高效。
目标是使以下内容尽可能高效。
目标编号 1. 使用句子结尾(点、3 个点、感叹号...)分隔所有文本。
目标数字 2 获取出现在字符串 'em' 之后的所有数字 这
是一个可能的小字符串的示例及其正则表达式。(真正的可能真的很笨拙)
正则表达式:旧:
(?:[^.!?:]|...)(?:(?:[^.!?:]|...)*?em (\d+))*
新:
(?:[.!?]|[.][.][.])(?:(?:[^.!?]|[.][.][.])*?\bem\b (\d+))*
适用于字符串(我只是编造的)
(我在开头插入 . )
.Foi visto que a batalha em 1939 foi。Claro que a data que digo ser em 1939 é uma farsa。Em 1938 já(插入 em 1910)não havia reis。
我想要的是制作一个不回溯的正则表达式,因为它根本不需要回溯。通过这样做,我想我可以节省这需要的处理时间……从 30 秒减少到 20 秒甚至 10 秒!就为了这个1,需要1s才能完成。
补充:
谢谢现在的答案,我有一个不会失败的答案。但它仍然回溯太多。有什么解决办法吗?
添加(回答一个已删除的问题):
不幸的是我没有样本数据,谁让我这样做说他也没有样本数据,这仍然需要“到昨天”完成。如果你给我一些尽可能高效地处理这个文本的东西,我确信我可以使用它并且隐蔽,如果需要针对这项工作的特定内容。否则我会再在这里问。