Regex 正则表达式-识别句型

Regex 正则表达式-识别句型,regex,Regex,我想从大文本块中识别特定的模式,我将使用C#.NET正则表达式库 i、 e 它还应该避免“前进”,因为后面跟着单词 我目前正在使用表达式([\S]+)({0,3})(,|和)),它返回所有单词直到和。你能给我推荐一个包含单词之后和之后的表达方式吗 干杯! Nilay您是否尝试过: (([\S]+)( {0,3})?(,|and|\.)) 使用找到正确答案 问题:当比较前进时,正则表达式光标将位于前进参考上,即 单色、中性、标准、风景和肖像< /代码>考虑和作为捕获的一部分,而不是该单词可用于

我想从大文本块中识别特定的模式,我将使用C#.NET正则表达式库

i、 e

它还应该避免“前进”,因为后面跟着单词

我目前正在使用表达式
([\S]+)({0,3})(,|和))
,它返回所有单词直到和。你能给我推荐一个包含单词之后和之后的表达方式吗

干杯! Nilay

您是否尝试过:

 (([\S]+)( {0,3})?(,|and|\.))

使用找到正确答案

问题:当比较前进时,正则表达式光标将位于前进参考上,即 <代码>单色、中性、标准、风景和肖像< /代码>考虑<代码>和作为捕获的一部分,而不是该单词可用于下一捕获,因此它不会捕获肖像。正确的方法是使用前后环视


(?=({0,1})(,|和))
是正确的前瞻,而
(?匹配列表并不太难,但将其正确放入列表更难,我怀疑我在perl中使用的机制依赖于语言(我不使用microsoft产品,所以我不会在C#中向您介绍)

在perl中,我会这样做。这不是一个单一的正则表达式答案,但我认为代码更清楚

$string = "This camera support Monochrome, Neutral, Standard, Landscape and Portrait foo bar baz";

$re_sep = "(?: {0,3}, {0,3}| {1,3}and {1,3})";
$re_list = "\w+(?:$re_sep\w+)+";

($list) = $string =~ m/($re_list)/;
@list_elements =  split /$re_sep/, $list;

[^\.]*
添加到末尾。示例:您最好使用拆分:我还希望捕获一组单词作为数组,而不是句子。使用正则表达式的原因是非结构化文本,但规则仅限于,&(和)它在以下情况下如何工作:“1.此相机支持单色、中性、标准、横向和纵向或其他。”这将不起作用,如果句子是这样的,1。这台相机支持单色,中性,标准,横向和纵向让它更多的话…它有向前和向后的参考,我无法排序:)刚刚得到解决方案使用regex环顾四周。
$string = "This camera support Monochrome, Neutral, Standard, Landscape and Portrait foo bar baz";

$re_sep = "(?: {0,3}, {0,3}| {1,3}and {1,3})";
$re_list = "\w+(?:$re_sep\w+)+";

($list) = $string =~ m/($re_list)/;
@list_elements =  split /$re_sep/, $list;