正則表達式:是否有AND運算符?

顯然,您可使用| (管道?)表明OR ,可是還有一種方法表明AND嗎? 正則表達式

具體來講,我想匹配包含某個短語的所有但沒有特定順序的文本段落。 this


#1樓

爲何不使用awk?
使用awk regex AND,或很簡單 spa

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

#2樓

AND運算符在RegExp語法中是隱式的。
必須使用管道指定OR運算符。
如下RegExp: code

var re = /ab/;

表示字母a 字母b
它也適用於組: 字符串

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

它表示組co de
用OR替換(隱式)AND將須要如下幾行: get

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

#3樓

您能夠將輸出傳遞到另外一個正則表達式。 使用grep,您能夠執行如下操做: it

grep A | grep B io


#4樓

除了接受的答案 awk

我將爲您提供一些實際示例,以使您中的一些人更加清楚。 例如,假設咱們有這三行文字: file

[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樓

該順序始終隱含在正則表達式的結構中。 爲了完成所需的操做,您必須針對不一樣的表達式屢次匹配輸入字符串。

單個正則表達式是不可能作到的。

相關文章
相關標籤/搜索