正则表达式基于模式提取字符串

时间:2018-12-12 12:13:50

标签: asp.net regex

请参见下面文档中的字符串

    32Main Section
    32.1Assignment and transfers by Obligors
    32.2Additional Borrowers
    (a)Subject to compliance with the provisions of paragraphs (c) and (d) of Clause 28.10 ("Know your customer" checks),

预期输出(仅当行首具有xx.xx模式时才列出字符串)

32.1Assignment and transfers by Obligors
32.2Additional Borrowers

正则表达式我们正在尝试\d+(\.\d{1,2}.*)

但是这给了我们第三行,但我们也没有,因为它在行的中间有数字。我们只想列出以数字或小数开头的行...

2 个答案:

答案 0 :(得分:0)

您可以尝试与此伴侣

^\d+\.\d+.*
  

说明

  • ^-字符串开头的锚点。
  • \d+\.\d+-匹配xx.xx模式(x是数字)。
  • .*-匹配除换行符以外的所有内容。零个或多个时间(贪婪模式)

Demo

答案 1 :(得分:0)

您要匹配以数字开头的任何字符串,因此可以缩写为^\d+(?:\.\d{1,2})?.*的{​​{1}}即可完成工作。

一个更好的主意是为数字指定一个分隔符。说,

^\d.*

或确保没有数字:

^\d+(?:\.\d{1,2})?[ .].*
                  ^^^^

^\d+(?:\.\d{1,2})?(?!\d).* ^^^^^^ 将在初始数字后留一个空格或[ .]

详细信息

  • .-字符串的开头
  • ^-1个以上数字
  • \d+-可选的非捕获组
    • (?:\.\d{1,2})?-一个点
    • \.-1或2位数字
  • \d{1,2}-一个空格或[ .]
  • .-字符串的其余部分。