如何只匹配正则表达式中的第一个数字

How to match just the first number in Regex

我有这个字符串

<h2 id="1">1. Item 1</h2>
<h2 id="1.2">1.2. Item 1.2</h2>
<h2 id="2">2. Item 2</h2>

我需要匹配文本中具有整数 1. 和 2. 的 headers。不是 1.2.

我是这样做的

<h2.*?>(.*?)[0-9]\.\s+(.*?)</h2>

匹配所有headers。我哪里错了?

去掉(.*?),然后在[0-9]后面加一个+,因为(.*?)存在于[0-9]之前,会匹配任何字符零次或多次,其中-turn 比赛 1.

<h2.*?>[0-9]+\.\s+(.*?)</h2>

DEMO

您可以使用正则表达式:

<h[1-6][^>]*>\d{1}\.(?!\d{1}\.)([^<]*)<\/h[1-6]>