.NET Regular Expression空格特殊字符

时间:2018-05-30 20:25:21

标签: c# .net regex

此模式有时无效(仅适用于第3个实例)。模式为^\s*flood\s{55}\s+\w+

我是正则表达式的新手,我正在尝试编写一个捕获以下所有条件的正则表达式:

Example 1: flood                 a)
Example 2: flood                 As respects
Example 3: flood                 USD100,000

(它采用表格格式,洪水与下一个词之间有很多空格)

3 个答案:

答案 0 :(得分:0)

你的表情在说:

^\s*字符串的开头可能有零个或多个空格字符

flood后跟字符串flood

\s{55}后面跟着55个空白字符

\s+\w+后跟一个或多个空白字符,然后是一个或多个单词字符。

如果您想要最少数量的空白字符,比如至少30个字符,后跟一个或多个单词字符,那么您可以这样做:

^\s*flood\s{30,}\w+

答案 1 :(得分:0)

试试这个:

string input =
@" flood                 a)
   flood                 As respects
   flood                 USD100,000";
string pattern = @"^\s*flood\s+.+$";
MatchCollection matches = Regex.Matches(input, pattern, RegexOptions.Multiline);

答案 2 :(得分:0)

如果洪水和下一个单词之间有很多空格,则可以省略\s{55},这是一个与whitespace character匹配55次的量词。

由于^\s*flood\s+\w+与单词字符匹配但不匹配空格或\w中的任何一个,因此),class DemoHelp extends StatelessWidget { @override Widget build(BuildContext context) { // TODO: implement build return MaterialApp( title: "Random App", home: RandomWorldHome(), ); } } class RandomWorldHome extends StatefulWidget { @override _RandomWorldHomeState createState() => new _RandomWorldHomeState(); } class _RandomWorldHomeState extends State<RandomWorldHome> { List<int> _arraySelectedRowStatus = List.filled(5, 1); @override Widget build(BuildContext context) { return new Scaffold( appBar: AppBar( title: Text("Random Word"), ), body: setupListView(), ); } Widget setupListView() { final _arrayOfData = [ {"name": "Amit Patel", "address": "Junagadh"}, {"name": "Arjun Jain", "address": "Madhya Pradesh"}, {"name": "Ajay Shah", "address": "Limbadi"}, {"name": "Ankur Patel", "address": "Visanagar"}, {"name": "Soheb Ansari", "address": "Ahmedabad"} ]; return ListView.builder( padding: new EdgeInsets.all(10.0), itemCount: _arrayOfData.length, itemBuilder: (context, i) { return ListTile( title: Text(_arrayOfData[i]["name"]), subtitle: new Text(_arrayOfData[i]["address"]), leading: new CircleAvatar( backgroundColor: Colors.blue, child: new Text(_arrayOfData[i]["name"][0])), trailing: new Icon( (_arraySelectedRowStatus[i] == 0 ? Icons.favorite_border : Icons.favorite), color: (_arraySelectedRowStatus[i] == 0 ? null : Colors.red), ), onTap: (){ setState(() { _arraySelectedRowStatus[i] = _arraySelectedRowStatus[i] == 0 ? 1 : 0; }); Scaffold.of(context).showSnackBar(new SnackBar( content: new Text("You are selecting at ${_arraySelectedRowStatus[i]}"))); }, ); }, ); } } 的所有值都不匹配,因为{{1}}。

要匹配您的值,您可以使用character class并添加您允许匹配的字符:

^\s*flood\s+[\w,) ]+

或者,如果您想匹配任何字符,您可以使用点而不是字符类。

根据你的评论,你可能会使用积极的观察:

(?<=\(13\. Deductible\))\s*(\s*flood\s+[\w,) ]+)+

Demo