Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.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
RegExps:使用否定匹配以字符开头的单词_Regex_Bash_Grep_Regex Negation - Fatal编程技术网

RegExps:使用否定匹配以字符开头的单词

RegExps:使用否定匹配以字符开头的单词,regex,bash,grep,regex-negation,Regex,Bash,Grep,Regex Negation,尝试学习正则表达式 在阅读了关于懒惰、贪婪和否定角色类作为懒惰的替代品的部分后,我尝试自己使用它,但我不明白为什么下面的内容不起作用 echo "hello world is this the way?" | grep -oE '\<w[^\>]+\>' 实际产量: world is this the way 单词边界字符(\)是否需要在字符类中进行特殊转义 我只是在cli(bash 4.2.45,osx mavericks)上进行测试。这是一个因素吗 我知道\b也是一个单

尝试学习正则表达式

在阅读了关于懒惰、贪婪和否定角色类作为懒惰的替代品的部分后,我尝试自己使用它,但我不明白为什么下面的内容不起作用

echo "hello world is this the way?" | grep -oE '\<w[^\>]+\>'
实际产量:

world is this the way
单词边界字符(
\<\>
)是否需要在字符类中进行特殊转义

我只是在cli(bash 4.2.45,osx mavericks)上进行测试。这是一个因素吗

我知道
\b
也是一个单词边界字符,但是如果我使用它,那么regexp是这样的:
\bw[^\b]+\b
,我会得到相同的输出,但它包含问号

谢谢

更新:


我正在寻找一个使用否定字符类的答案,以避免正则表达式引擎中的回溯,正如在Laziness的替代方案中所解释的那样。如果不能使用否定字符类,我将寻找原因的解释。

您可以使用以下模式:

\bw\w+\b
这将捕获所有以
w
开头并由单词字符组成的单词


使用否定时,您必须列出所有要排除的字符-我确信您要排除的字符不止是单词边界和问号。

您可以使用以下模式:

\bw\w+\b
这将捕获所有以
w
开头并由单词字符组成的单词


使用否定时,您必须列出所有要排除的字符-我确信您要排除的字符不止是单词边界和问号。

您可以使用以下模式:

\bw\w+\b
这将捕获所有以
w
开头并由单词字符组成的单词


使用否定时,您必须列出所有要排除的字符-我确信您要排除的字符不止是单词边界和问号。

您可以使用以下模式:

\bw\w+\b
这将捕获所有以
w
开头并由单词字符组成的单词


当使用否定时,您必须列出所有要排除的字符-我确信您要排除的字符不止是单词边界和问号。

既然单词边界通常由空格定义,为什么不使用

\<w[^[:space:]]+\>

既然单词边界通常由空格定义,为什么不使用

\<w[^[:space:]]+\>

既然单词边界通常由空格定义,为什么不使用

\<w[^[:space:]]+\>

既然单词边界通常由空格定义,为什么不使用

\<w[^[:space:]]+\>


是的,但我在寻找一个使用否定字符类的答案,或者解释了为什么在regular-expressions.info上使用否定字符类不起作用。不过,否定的问题是,您必须列出所有要排除的字符-我相信您要排除的字符不止是单词边界和问号。也许我不理解否定。正则表达式引擎不是停止匹配并在遇到否定字符时返回匹配吗?啊,所以它只是跳过单词结尾字符并继续匹配吗?是的。否定意味着:不在列表中的任何字符都匹配。然后它会继续匹配其余的。是的,但我正在寻找一个使用否定字符类的答案,或者解释了为什么在regular-expressions.info上使用否定字符类不起作用。不过,否定的问题是,您必须列出所有要排除的字符-我相信您要排除的字符不止是单词边界和问号。也许我不理解否定。正则表达式引擎不是停止匹配并在遇到否定字符时返回匹配吗?啊,所以它只是跳过单词结尾字符并继续匹配吗?是的。否定意味着:不在列表中的任何字符都匹配。然后它会继续匹配其余的。是的,但我正在寻找一个使用否定字符类的答案,或者解释了为什么在regular-expressions.info上使用否定字符类不起作用。不过,否定的问题是,您必须列出所有要排除的字符-我相信您要排除的字符不止是单词边界和问号。也许我不理解否定。正则表达式引擎不是停止匹配并在遇到否定字符时返回匹配吗?啊,所以它只是跳过单词结尾字符并继续匹配吗?是的。否定意味着:不在列表中的任何字符都匹配。然后它会继续匹配其余的。是的,但我正在寻找一个使用否定字符类的答案,或者解释了为什么在regular-expressions.info上使用否定字符类不起作用。不过,否定的问题是,您必须列出所有要排除的字符-我相信您要排除的字符不止是单词边界和问号。也许我不理解否定。正则表达式引擎不是停止匹配并在遇到否定字符时返回匹配吗?啊,所以它只是跳过单词结尾字符并继续匹配吗?是的。否定意味着:不在列表中的任何字符都匹配。然后它会继续匹配其余的。是的,这也行。理解这一点的一部分是,否定类只意味着匹配不属于否定集的内容,另外还要知道单词的结尾有时更好地由空格定义。是的,这也有效。理解这一点的一部分是,否定类只意味着匹配不属于否定集的内容,另外还要知道单词的结尾有时更好地由空格定义。是的,这也有效。理解这一点的一部分是,否定类只意味着匹配不属于否定集的内容,另外还要知道单词的结尾有时更好地由空格定义。是的,这也有效。理解这一点的一部分是,否定类只意味着匹配不属于neg的部分