我试图用正则表达式提取一个子字符串,但是我遇到了一些麻烦...
字符串是从一列字符串构建的,我只需要第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&))
答案 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