查找没有后跟跨度标签的域

时间:2018-07-21 18:18:55

标签: regex negative-lookahead

我正在尝试用一些文本对正则表达式进行正则表达式。我想忽略后面带有import 'package:flutter/material.dart'; void main() => runApp(new MyApp()); class MyApp extends StatelessWidget { // This widget is the root of your application. @override Widget build(BuildContext context) { return new MaterialApp( title: 'Flutter Demo', theme: new ThemeData( primarySwatch: Colors.blue, ), home: new MyHomePage(title: 'Flutter Demo Home Page'), ); } } class MyHomePage extends StatefulWidget { MyHomePage({Key key, this.title}) : super(key: key); final String title; @override _MyHomePageState createState() => new _MyHomePageState(); } class _MyHomePageState extends State<MyHomePage> { @override Widget build(BuildContext context) { Scaffold.of(context).showSnackBar(SnackBar(content: Text('Welcome User'))); return new Scaffold( appBar: new AppBar( title: new Text(widget.title), ), body: new Center( child: new Column( mainAxisAlignment: MainAxisAlignment.center, children: <Widget>[], ), ), ); } } 标记的域。

例如,给出以下输入:

col1     col2     col3
a         ex1      102
a         ex2      25
a         ex3      50
a         ex4      66
b         ex2      45
b         ex5      20
c         ex1      30

我希望我的比赛中包含一项:

col1  ex1   ex2    ex3    ex4    ex5
 a    102    25     50     66     0
 b     0     45      0     0      20
 c     30    0       0      0     0

我尝试了以下操作:

</span>

上述问题是,负前行只是意味着输入中的第二项被删减,仍然被认为是有效的:

matchme.com<span>dontmatchme.com</span>

我在https://regex101.com/r/FpWomQ/1处有一个regex101

2 个答案:

答案 0 :(得分:1)

您是否可以将正则表达式更改为忽略以<开头的行,如果可以的话,可以使用此正则表达式

^[^<]*$

其含义将与不以<开头的任何行匹配

答案 1 :(得分:1)

您可以使用以下正则表达式:

[a-z.]+(?=<\/span>)|([a-z.]+)(?=<[\/a-z]+>)

正则表达式使用轮换仅捕获不跟</span>的域。

  • [a-z.]+匹配尽可能多的字母或.字符。
  • (?=<\/span>)正向</span>前进。
  • |交替(OR)。
  • ([a-z.]+)捕获组。匹配尽可能多的字母或.字符。
  • (?=<[\/a-z]+>)正向前看,用于打开括号<,字母字符或正斜杠/,右括号>

所需的匹配项包含在捕获组中。 您可以实时使用正则表达式here