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

时间:2015-10-23 10:30:57

标签: c# regex numbers

我有这个字符串

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

我需要在文本中匹配具有int数字1和2的标头。不是1.2。

我这样做

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

它匹配所有标头。我哪里错了?

2 个答案:

答案 0 :(得分:1)

删除(.*?),然后在+之后添加[0-9]因为(.*?)存在,[0-9]将匹配任何字符零次或多次,这反过来匹配1.

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

DEMO

答案 1 :(得分:1)

您可以使用正则表达式:

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