【问题标题】:Regex : two conditions正则表达式:两个条件
【发布时间】:2016-08-23 00:00:57
【问题描述】:

我有一个包含很多行的 csv 文件。

我想获得带有;F;;A; 的行,但不希望获得带有;REPORTING; 的行。

  1. 123456;;;;;75;;;;A;18;-83;-7;19;;
  2. 654321;52;;;;;;;;F;8;-3;7;489;;
  3. 123456;;;;;;573;;;;1858;-88963;-746;1549;;
  4. 123456;;523;;;报告;fd3574;;;A;183001;-86583;-457;19211;;

我想得到第 1 和第 2 行,但不是第 3 和第 4 行...

我试过了:

;(?!REPORTING);.*;(F|A);

但没有成功...

有什么想法吗?

【问题讨论】:

  • 根据语言的不同,findin 操作会比正则表达式便宜。

标签: regex


【解决方案1】:

这会起作用

^(?=.*;[AF];)(?!.*;REPORTING;)

Regex Demo

【讨论】:

  • 使用环视是昂贵的! ^(?!.*;REPORTING;).*;[AF];.* 以少 100 步返回相同的东西
  • @Aaron 这是个好方法
  • 其实我不知道我的 100 步是从哪里拉出来的。它仍然更有效,但只是略微。
  • @Aaron 最后这些都将取决于输入字符串..:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-11
  • 2016-09-19
  • 1970-01-01
  • 2020-06-20
  • 2011-10-30
  • 1970-01-01
相关资源
最近更新 更多