正则表达式模式查找所有没有直接点字符的数字

Regex pattern to find all the digits which don't have the immediate dot character

你们中的任何人都可以帮我为以下要求编写一个正则表达式模式吗?

  1. 没有编号的部分标签
  2. 所有后面没有点字符的部分标签编号。
  3. 仅考虑靠近部分标记的数字。

测试字符串:

<sectionb>2.3. Optimized test sentence<op>(</op>1,1<cp>)</cp></sectionb>
*<sectiona>2 Surface Model: ONGV<op>(</op>1,1<cp>)</cp></sectiona>*
<sectiona>3. Verification of MKJU<op>(</op>1,1<cp>)</cp> Entity</sectiona>
*<sectionc>3. 2. 1 <txt>Case 1</txt> Annual charges to SGX</sectionc>*
*<sectiona>Compound Interest<role>back</role></sectiona>*

模式:

<section[a-z]>[\d]*[^\.]*<\/section[a-z]

正则表达式模式应匹配以下字符串:

<sectiona>2 Surface Model: ONGV<op>(</op>1,1<cp>)</cp></sectiona>
<sectionc>3. 2 1 <txt>Case 1</txt> Annual charges to SGX</sectionc>
<sectiona>Compound Interest<role>back</role></sectiona>

这符合更新后的要求:

<section\w+>(((\d+\.\s*)*(\d+[^\.]))|[^\d]).*?<\/section\w>

<section\w+> \w[a-z] 基本相同,但 + 允许 0 或更多(<section> <sectionabc>),恰好删除一个字母 +

(\d+\.\s*)* 0 个或更多 digit/dot/any 个空格 - 匹配更新后的第 3 行,现在 3. 2. 1 点后有空格

(\d+[^\.]) 必须匹配不带点的数字,一个或多个数字

((...)|[^\d]) 或部分不是以数字开头(匹配第 5 行)

.*? 后跟任何字符,尽可能少的次数直到以下 </section - 可能会通过展望来简化正则表达式来做到这一点,但是,对我来说,这保持单独的“无数字”条款分开。

regex101