C# 使用正则表达式从字符串中获取子字符串

C# 使用正则表达式从字符串中获取子字符串,c#,regex,split,C#,Regex,Split,我正在尝试使用正则表达式从一个大字符串中获取子字符串。 子字符串的格式如下所示: 以数字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_ 完整字符串示例: 01=#010.0000#001.0

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

  • 以数字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_
完整字符串示例:

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}=.+_$
我错过了一些东西。有什么帮助吗

您可以使用

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

您也可能不需要在匹配前输入任何数字,然后输入
(?反向查找:

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

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

如果你想要字符串的一部分,那么你首先需要放下锚点
^
$
我将始终匹配整个字符串或根本不匹配。请注意,如果有更具体的要求,您可能希望使您的模式更详细。请参阅
\d{2}=(?:#[-+]?\d+\.\d+(?:[-+]?\d+\.\d+*)++[a-zA-Z]{2}。