regex - 收集重复的 2 组模式
问题描述
我正在寻找将从以下返回的正则表达式
赫胥黎定律有些有趣。还有一些有趣的事情。 达拉斯的法律他的东西很无聊。 虚无法则有些东西。
作为 2 行文本,其中 2 个组已被识别:
- 第一组以“法律”开头并以第一个大写字母结束;
- 第二组之后开始并在遇到下一个第一组“法律”模式时结束。
我的目标是通过使用这样的捕获组将标题与核心文本分开来重新表述它:
The law of Huxley
Something interesting. Some other interesting thing.
The law of Dallas
This thing is boring.
The law of void
Some stuff.
我试过了
((The law [\w\s]+)([A-Z].+))+
无济于事
解决方案
您可以使用
(The law\s+\w+\s\P{Lu}*)(\p{Lu}.*?)(?=The law|$)
请参阅正则表达式演示。
详情:
(The law\s+\w+\s\P{Lu}*)
- 第 1 组:The law
文本,然后是一个或多个空格、一个或多个单词字符、一个空格,然后是除大写字母以外的任何零个或多个字符(\p{Lu}.*?)
- 第 2 组:一个大写字母,然后是除换行符之外的任何零个或多个字符,尽可能少,直到第一次出现后续子模式(?=The law|$)
- 一个正向的前瞻,它要求The law
字符串的任一或结尾立即位于当前位置的右侧。
推荐阅读
- vba - 按列位置将 Excel 电子表格导入 MS Access
- php - 默认 PHP 函数被解释为 Symfony 中 Composer 的库函数
- javascript - 如何只触发一次增量
- javascript - 在 div 重新加载后在输入上绑定事件处理程序 datetimepicker
- c# - 从 docx 转换为 pdf 时,Spire doc 会丢失格式
- php - php date_create_from_format 无法正常工作
- c# - 当我在表头 JQuery 上选择排序时,下拉选择不会预先附加
- python - Spacy,两个句子之间的奇怪相似性
- jquery - JQuery 在点击时环绕文本
- fingerprint - DigitalPersona one touch for windows sdk 版本 1.4.0