【问题标题】:Get substrings from string using regular expression使用正则表达式从字符串中获取子字符串
【发布时间】:2019-05-02 16:19:27
【问题描述】:

我正在尝试使用 RegEx 从一个大字符串中获取子字符串。 子串的格式如下:

  • 以数字 00-99 开头,后跟等号 =。
  • 可能包含至少一个字符。任何字符。
  • 以下划线“_”结尾。

示例子字符串:

01=#010.0000#001.0000#+10.0#AA_
02=#020.0000#002.0000#+20.0#BB_

完整字符串示例:

01=#010.0000#001.0000#+10.0#AA_02=#020.0000#002.0000#+20.0#BB_

我尝试了这个表达式,但结果是我得到了完整的字符串。

^\d{2}=.+_$

我错过了一些东西。有什么帮助吗?

【问题讨论】:

  • 如果你想要一个字符串的一部分,那么你首先需要删除锚^$,因为这将始终匹配整个字符串或根本不匹配。

标签: c# regex split


【解决方案1】:

你可以使用

\d{2}=.*?_(?=\d{2}=|$)

regex demo

您也可能在匹配之前不需要数字,(?<!\d) 否定后向:

(?<!\d)\d{2}=.*?_(?=\d{2}=|$)

\d{2}=.*?_(?=\d{2}=|$) 模式匹配 2 个数字,=,然后是除换行符之外的任何 0+ 字符,尽可能少,直到第一个有两个数字的 _ 和它之后的 =或在字符串的末尾。

【讨论】:

  • 请注意,如果有更具体的要求,您可能希望使您的模式更详细。见\d{2}=(?:#[-+]?\d+\.\d+(?:_[-+]?\d+\.\d+)*)+_[a-zA-Z]{2}_demo
猜你喜欢
  • 2017-06-07
  • 1970-01-01
  • 2010-10-14
  • 2018-05-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多