Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.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 排除/包括正则表达式模式_Regex_Pattern Matching_Regex Negation - Fatal编程技术网

Regex 排除/包括正则表达式模式

Regex 排除/包括正则表达式模式,regex,pattern-matching,regex-negation,Regex,Pattern Matching,Regex Negation,我想尝试制作更多类型的正则表达式,所以我一直在尝试做以下工作 以下是我的表达: 在测试字符串中,前3个是好的,所以像这样的模式必须匹配,问题是最后一个,我不想包括在内,所以我尝试这样做: 这是: 但是没有运气 其主要思想是: `aaa ... bbb ccc` -> must match `ccc ... (aaa|ddd|eee) ... bbb ccc` -> should not match 我怎样才能使它工作或更好的实现?这里有一个相对简单的正则表达式来解决您的问题:

我想尝试制作更多类型的正则表达式,所以我一直在尝试做以下工作

以下是我的表达:

在测试字符串中,前3个是好的,所以像这样的模式必须匹配,问题是最后一个,我不想包括在内,所以我尝试这样做:

这是:

但是没有运气

其主要思想是:

`aaa ... bbb ccc` -> must match
`ccc ... (aaa|ddd|eee) ... bbb ccc` -> should not match

我怎样才能使它工作或更好的实现?

这里有一个相对简单的正则表达式来解决您的问题:

(?:(?<=[-]\s)(?:ITA\s)?\w{3}\s\w{3}\s[-]\s\w{3}\s\w{3}\s\w{3}\b)|(?:Eng\.sub\.ita)
(?:(?您可以使用

var rx = new Regex(@"(?:^|])(?:(?!\b(?:eng|ita)\b)[^]])*\b(eng(?:\W+\w+)?\W+sub\W+ita)\b", RegexOptions.Compiled | RegexOptions.IgnoreCase);
请参阅。您需要获取组1的值

图案细节

  • (?:^ |]
    -字符串的开头或
    ]
    (添加
    | RegexOptions.Multiline
    ,如果您有一个多行字符串作为输入,但我想这些都是独立的字符串)
  • (?:(?!\b(?:eng | ita)\b)[^]*
    -除了
    ]
    之外的任何字符,尽可能多的字符,这些字符不会启动整个单词
    eng
    ita
    (请参阅以更好地理解此结构)
  • \b
    -单词边界
  • (eng(?:\W+\W+?\W+sub\W+ita)
    -第1组:
    • eng
      -文字子字符串
    • (?:\W+\W+)
      -任意1+个非单词字符的可选序列,后跟1+个单词字符(实际上是可选单词)
    • \W+
      -1+非单词字符
    • sub
      -文字子字符串
    • \W+
      -1+非单词字符
    • ita
      -文字子字符串
  • \b
    -单词边界
见:


试试@LievenKeersmaekers我觉得OP需要匹配一次子字符串,如果它前面没有特定的子字符串。所以…基本上,你想匹配'Eng xyz-Sub Ita',其中
xyz
是一些随机的三个字母,对吗?(旁白:注意堆栈溢出不是聊天室,所以“thx”、“want”和“lol”这里不合适。请用真话-最好是技术性的写作标准)。@halfer对不起我的语言,我的英语不太好,有时我会尽量用最好的方式解释自己。我总是尝试学习一些。这也很有效,谢谢,但与圣克拉丽塔饮食S02e01不匹配[Mux-XviD-Ita Eng Mp3-Sub-Ita Eng]NFMux由Pir8制作[CURA]Mostri Nella Storia…有可能从一开始就让它与一些额外的字符一起工作吗?@JormanFranzini你说它不工作是什么意思?它是@JormanFranzini你还想要
…Sub Ita eng
结尾的eng部分吗?嗨,对不起,我写错了,我想说匹配!我的错了!但不需要匹配,因为这是Ita eng…Sub Ita eng.我认为匹配是因为XviD-Ita eng…我认为-会有所不同。与此同时,我研究了这里编写的所有代码,有很多东西需要学习!@JormanFranzini不必担心。我已经更新了我的代码以适应你的新条件。试试看:)令人印象深刻!也适用于我添加的最后一个。我将搜索更多的额外示例来测试它,但似乎非常好。我必须仔细阅读表达式的逻辑,因为对我来说是一种魔力!嗨,你的解决方案似乎是最适合所有模式的解决方案。我将在将来重试,可能需要一些调整,但我正在研究正则表达式我开始了解一些,不像你,但是some@JormanFranzini:)为什么不喜欢我?如果你了解这个模式,我相信你会成为一名职业选手。
var strs = new List<string> { 
        "Lucifer S03e15 [XviD - Eng Mp3 - Sub Ita Eng] DLRip By Pir8 [CURA] Fede e Religioni",
        "Lucifer S03e15 [XviD - Eng Mp3 - Sub Ita Eng] DLRip By Pir8 [CURA] Fede e Religioni",
        "Lucifer S03e01-08 [XviD - Eng Mp3 - Sub Ita Eng] DLRip By Pir8 [CURA] Fede e Religioni SEASON PREMIERE",
        "Young Sheldon S01e13 [SATRip 720p - H264 - Eng Ac3 - Sub Ita] HDTV by AVS",
        "Young Sheldon S01e08 [Mux 1080p - H264 - Ita Eng Ac3 - Sub Ita Eng] WEBMux Morpheus",
        "Young Sheldon S01e08 [Mux 1080p - H264 - Ita Eng Ac3 - Sub Ita Eng] WEBMux Morpheus",
        "Young Sheldon S01e14 [SATRip 720p - H264 - Eng Ac3 - Sub Ita] HDTV by AVS",
        "Lucifer S03e15 [XviD - Eng Mp3 - Sub Ita Eng] DLRip By Pir8 [CURA] Fede e Religioni",
        "Lucifer S03e16 [XviD - Eng Mp3 - Sub Ita Eng] DLRip By Pir8 [CURA] Fede e Religioni",
        "Lucifer S02e01-13 [XviD - Eng Mp3 - Sub Ita] DLRip by Pir8 [CURA] Fede e Religioni FULL ",
        "Absentia S01e01-10 [Mux 1080p - H264 - Ita Eng Ac3 - Sub Ita Eng] By Morpheus The.Breadwinner.2017.ENG.Sub.ITA.HDRip.XviD-[WEB]"
    };
var rx = new Regex(@"(?:^|])(?:(?!\b(?:eng|ita)\b)[^]])*\b(eng(?:\W+\w+)?\W+sub\W+ita)\b", RegexOptions.Compiled | RegexOptions.IgnoreCase);
foreach (var s in strs)
{
    Console.WriteLine(s);
    var result = rx.Match(s);
    if (result.Success)
        Console.WriteLine("Matched: {0}", result.Groups[1].Value);
    else
        Console.WriteLine("No match!");
    Console.WriteLine("==========================================");
}
Lucifer S03e15 [XviD - Eng Mp3 - Sub Ita Eng] DLRip By Pir8 [CURA] Fede e Religioni
Matched: Eng Mp3 - Sub Ita
==========================================
Lucifer S03e15 [XviD - Eng Mp3 - Sub Ita Eng] DLRip By Pir8 [CURA] Fede e Religioni
Matched: Eng Mp3 - Sub Ita
==========================================
Lucifer S03e01-08 [XviD - Eng Mp3 - Sub Ita Eng] DLRip By Pir8 [CURA] Fede e Religioni SEASON PREMIERE
Matched: Eng Mp3 - Sub Ita
==========================================
Young Sheldon S01e13 [SATRip 720p - H264 - Eng Ac3 - Sub Ita] HDTV by AVS
Matched: Eng Ac3 - Sub Ita
==========================================
Young Sheldon S01e08 [Mux 1080p - H264 - Ita Eng Ac3 - Sub Ita Eng] WEBMux Morpheus
No match!
==========================================
Young Sheldon S01e08 [Mux 1080p - H264 - Ita Eng Ac3 - Sub Ita Eng] WEBMux Morpheus
No match!
==========================================
Young Sheldon S01e14 [SATRip 720p - H264 - Eng Ac3 - Sub Ita] HDTV by AVS
Matched: Eng Ac3 - Sub Ita
==========================================
Lucifer S03e15 [XviD - Eng Mp3 - Sub Ita Eng] DLRip By Pir8 [CURA] Fede e Religioni
Matched: Eng Mp3 - Sub Ita
==========================================
Lucifer S03e16 [XviD - Eng Mp3 - Sub Ita Eng] DLRip By Pir8 [CURA] Fede e Religioni
Matched: Eng Mp3 - Sub Ita
==========================================
Lucifer S02e01-13 [XviD - Eng Mp3 - Sub Ita] DLRip by Pir8 [CURA] Fede e Religioni FULL 
Matched: Eng Mp3 - Sub Ita
==========================================
Absentia S01e01-10 [Mux 1080p - H264 - Ita Eng Ac3 - Sub Ita Eng] By Morpheus The.Breadwinner.2017.ENG.Sub.ITA.HDRip.XviD-[WEB]
Matched: ENG.Sub.ITA
==========================================