Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 正则表达式-使用and运算符匹配行_Regex - Fatal编程技术网

Regex 正则表达式-使用and运算符匹配行

Regex 正则表达式-使用and运算符匹配行,regex,Regex,我有一些文字: 大红狐。它们不是蓝狐狸。但是红色的狐狸再也跑不快了 基本上,我想把red和fox都按那个顺序出现的句子和另一个不按那个顺序出现的正则表达式匹配起来 我该怎么做呢?假设每个句子出现在单独的一行中,您可以执行以下操作: 我想把red和fox都按顺序出现的句子匹配起来 您可以使用: ^.*?red.*?fox.*$ 我想匹配red和fox以任意顺序出现的句子 您可以使用正向前瞻: 假设你的句子中没有带点的缩写词: 对于任何订单: (?=[^.!?]*fox)(?=[^.!?]*red

我有一些文字:

大红狐。它们不是蓝狐狸。但是红色的狐狸再也跑不快了

基本上,我想把red和fox都按那个顺序出现的句子和另一个不按那个顺序出现的正则表达式匹配起来

我该怎么做呢?

假设每个句子出现在单独的一行中,您可以执行以下操作:

我想把red和fox都按顺序出现的句子匹配起来

您可以使用:

^.*?red.*?fox.*$
我想匹配red和fox以任意顺序出现的句子

您可以使用正向前瞻:


假设你的句子中没有带点的缩写词:

对于任何订单:

(?=[^.!?]*fox)(?=[^.!?]*red)[^.!?]+[.!?]
福克斯之前的红色:

[^.!?]*?red[^.!?]+?fox[^.!?]*[.!?]
对于红狐狸:

\b[^.?!]+red.*?fox[.?!]+
(?:\b[^.?!]+red.*?fox[.?!]+)(.*?[.?!]+)
对于以下红色:

\b[^.?!]+fox.*?red[.?!]+
要捕获除以下句子外的所有其他句子:

\b[^.?!]+red.*?fox[.?!]+
(?:\b[^.?!]+red.*?fox[.?!]+)(.*?[.?!]+)
在使用Javascript时,不要忘记使用g修饰符来捕获所有事件:

/\b[^.?!]+red.*?fox[.?!]+/g

你试过什么了吗?还有-regex在每种语言中都不太一样-你在使用一种特定的语言吗?是的,在Javscript中试过。我知道如何使用|但这就像或运算你假设输入数据已经被分解成句子,OP没有具体说明是这样的。答案很好,但是。。。。。。我们怎么知道它是一个句子?这将匹配所有3个句子这是为了验证一行字符串。如果有多行需要验证,那么我建议使用/m开关。他也没有说输入被分成多行。我认为他正在处理一段没有换行符的文本,并希望在该段中分离出符合某些模式的句子。@MikeClark:请参阅我对另一个答案的评论,关于使用正则表达式将一个段落分成每个句子。这是迄今为止最好的答案-但什么是以换行符结尾的句子?或者hehe@GrahamRitchie当前位置的确,我认为把一段话分成句子几乎是不可能的。小罗伯特是个好人。事实上,假设正确的语法是正确的,就需要额外的语法\s[A-Z]-但上面的答案值得我的回答+1@anubhava:是的,我也这么认为。