您能帮我用正则表达式将1个字符串中的2个不同部分组合为一个组吗

时间:2018-07-13 17:32:44

标签: regex

我需要一些帮助。我希望得到比赛:

  • 我的部分
  • 段落(b)

但是,我似乎将所有单词都包含在中间,而不是提取它们。

[\W]My Section[\W].*?\b(Paragraph[\s])\b

字符串:

“My Section” has the meaning specified in Paragraph 3(a) of this Annex.

3 个答案:

答案 0 :(得分:2)

我假设“我的部分”部分将始终用引号引起来。

"(.*?)".*?\b(Paragraph\s?.*?)\s

此正则表达式将有两个匹配的组,一个用于引用的部分,一个用于段落的位置。

Demo Here

答案 1 :(得分:1)

您的正则表达式将段落之前的部分与[\W]My Section[\W].*?\b匹配,然后在Paragraph组中捕获,后跟一个空格,而3(a)尚未捕获。

如果第一个文本始终是文本My Section,并且此格式Paragraph 3(a)始终相同,则可以使用2个捕获组更新正则表达式:

\W(My Section)\W.*?\b(Paragraph\s\d+\([^)]+\))

说明

  • \W匹配非文字字符
  • (My Section)在第1组中捕获我的部分
  • \W.*?\b匹配一个非单词字符,然后匹配零个或更多次非贪心字符和一个单词边界的任何字符
  • (捕获组2
    • \s\d+匹配一个空格字符,后跟一个或多个数字
    • \([^)]+\)首先匹配(,然后使用否定的character class不匹配(,然后匹配)
  • )关闭捕获组

除了在开始时不使用\W,还可以使用

答案 2 :(得分:0)

正则表达式取决于您使用的语言,如果我正确回答您的问题,则您的正则表达式应如下所示

.*(My Section).*?(Paragraph\s?.*?)\s.*

组将是: 1.全文 2.我的部分 2.第3(a)段