正则表达式:是否有AND运算符?

[亡魂溺海] 提交于 2019-12-27 18:40:58

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

显然,您可以使用| (管道?)代表OR ,但是还有一种方法代表AND吗?

具体来说,我想匹配包含某个短语的全部但没有特定顺序的文本段落。


#1楼

为什么不使用awk?
使用awk regex AND,或很简单

awk '/WORD1/ && /WORD2/ && /WORD3/' myfile

#2楼

AND运算符在RegExp语法中是隐式的。
必须使用管道指定OR运算符。
以下RegExp:

var re = /ab/;

表示字母a 字母b
它也适用于组:

var re = /(co)(de)/;

它表示组co de
用OR替换(隐式)AND将需要以下几行:

var re = /a|b/;
var re = /(co)|(de)/;

#3楼

您可以将输出传递到另一个正则表达式。 使用grep,您可以执行以下操作:

grep A | grep B


#4楼

除了接受的答案

我将为您提供一些实际示例,以使您中的一些人更加清楚。 例如,假设我们有这三行文字:

[12/Oct/2015:00:37:29 +0200] // only this + will get selected
[12/Oct/2015:00:37:x9 +0200]
[12/Oct/2015:00:37:29 +020x]

在这里查看演示 DEMO

我们要在此处执行的操作是选择+号,但前提是它在两个数字之间加一个空格,并且在四个数字之前。 这些是唯一的限制。 我们将使用此正则表达式来实现它:

'~(?<=\d{2} )\+(?=\d{4})~g'

请注意,如果您分隔表达式,它将给您不同的结果。

或者,也许您想在标签之间选择一些文本...但是不选择标签! 然后,您可以使用:

'~(?<=<p>).*?(?=<\/p>)~g'

对于此文本:

<p>Hello !</p> <p>I wont select tags! Only text with in</p> 

在这里查看演示 DEMO


#5楼

该顺序始终隐含在正则表达式的结构中。 为了完成所需的操作,您必须针对不同的表达式多次匹配输入字符串。

单个正则表达式是不可能做到的。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!