用正则表达式提取子字符串

时间:2019-03-17 14:03:54

标签: c# regex

我试图用正则表达式提取一个子字符串,但是我遇到了一些麻烦...

字符串是从一列字符串构建的,我只需要第4列

string stringToExtractFrom = "289  120 00001110 ?? 
4Control@SimApi@@QAEAAV01@ABV01@@Z = ??4Control@SimApi@@QAEAAV01@ABV01@@Z 
(public: class SimApi::Control & __thiscall SimApi::Control::operator=(class 
SimApi::Control const &))"
string pattern = @"\s+\d+\s+\d+\s+\S+\s(.*)\=";
RegexOptions options = RegexOptions.Multiline;

Regex regX = new Regex(pattern, options);
Match m = regX.Match(stringToExtractFrom);

while (m.Success)
{                       

 Group g = m.Groups[1];
 defData += g+"\n";
 m = m.NextMatch();
}

这是想要的字符串:?? 4Control @ SimApi @@ QAEAAV01 @ ABV01 @@ Z

当我得到想要分组的子字符串时,下面的字符串会起作用

  

1 0 00002E00 0ADOFactory @ SimApiEx @@ QAE @ ABV01 @@ Z =   0ADOFactory @ SimApiEx @@ QAE @ ABV01 @@ Z(公开:__ thiscall   SimApiEx :: ADOFactory :: ADOFactory(类SimApiEx :: ADOFactory const&))

1 个答案:

答案 0 :(得分:1)

如果第二个字符串对您有用,而第一个不起作用,则您可能首先匹配1个以上的数字,并在第三部分使用Widget secondPage(){ int _itemCount = 5; return Scaffold( body: ListView.builder( itemCount: _itemCount, itemBuilder: (context, int index){ return Padding( padding: EdgeInsets.all(3.0), child: Card( child: Padding( padding: const EdgeInsets.all(8.0), child: Text(index.toString(), style: TextStyle(fontSize: 30.0), textAlign: TextAlign.center,), ), ) , ); }, ), floatingActionButton: FloatingActionButton( onPressed:(){}, //**setState need to be here** child: Icon(Icons.add),), ); } 。然后使用否定的字符类捕获不等号的匹配项:

\S+

查看.NET regex demo | C# Demo