显然,您可使用|
(管道?)表明OR
,可是还有一种方法表明AND
吗? 正则表达式
具体来讲,我想匹配包含某个短语的所有但没有特定顺序的文本段落。 this
为何不使用awk?
使用awk regex AND,或很简单 spa
awk '/WORD1/ && /WORD2/ && /WORD3/' myfile
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)/;
您能够将输出传递到另外一个正则表达式。 使用grep,您能够执行如下操做: it
grep A | grep B
io
除了接受的答案 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
该顺序始终隐含在正则表达式的结构中。 为了完成所需的操做,您必须针对不一样的表达式屡次匹配输入字符串。
单个正则表达式是不可能作到的。