Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.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
C# 特定字符串模式的正则表达式_C#_Regex_Visual Studio 2010 - Fatal编程技术网

C# 特定字符串模式的正则表达式

C# 特定字符串模式的正则表达式,c#,regex,visual-studio-2010,C#,Regex,Visual Studio 2010,使用C#,我将处理信息的字符数组,寻找以下模式: 一个管道(0x7C),2到7对字符,后跟另一个管道(0x7C) 另一种说法是: |1122[33][44][55][66][77]| 字符对由范围为33-124十进制(“!”到“|”)的字符组成 第3对到第7对是可选的,但如果它们出现,则按顺序出现,因此您可以 |1122| <---shortest |112233| |11223344| |1122334455| |112233445566|

使用C#,我将处理信息的字符数组,寻找以下模式:

一个管道(0x7C),2到7对字符,后跟另一个管道(0x7C)

另一种说法是:

|1122[33][44][55][66][77]|

字符对由范围为33-124十进制(“!”到“|”)的字符组成

第3对到第7对是可选的,但如果它们出现,则按顺序出现,因此您可以

    |1122| <---shortest
    |112233|
    |11223344|
    |1122334455|
    |112233445566|
    |11223344556677| <---longest

| 1122 |如果我正确理解您的问题,正确的模式是:

\|([!-|]{2}){2,7}\|
或者捕捉每一组

\|([!-|]{2})([!-|]{2})([!-|]{2})?([!-|]{2})?([!-|]{2})?([!-|]{2})?([!-|]{2})?\|
不确定该范围是否会直接像那样工作,因此如果简化范围不工作,您可能需要执行
[A-Za-Z!@#$…]


此外,我认为您不希望将管道(
|
)包括在范围内,因为它可能会弄乱其他管道,因此
[!-{]
可能会更好

因此,我一直在研究它,并提出了{2,7}|对于正则表达式。问题仍然是如何做到这一点,并提取至少2对和可选的剩余5对?Ben,感谢您快速而优雅的回答。我只花了几分钟在Expresso中玩了这个表达式,它可以根据需要工作。正则表达式一经解决,看起来总是那么合乎逻辑。