Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.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# Regex在匹配其他条件时查找不包含空格的字符串_C#_.net_Regex_String_Spaces - Fatal编程技术网

C# Regex在匹配其他条件时查找不包含空格的字符串

C# Regex在匹配其他条件时查找不包含空格的字符串,c#,.net,regex,string,spaces,C#,.net,Regex,String,Spaces,我有一组字符串,可能包含某些模式。具体来说,有以下三点 以(后接10位数字,后接)开头 例如: (-1234567890) 以()开头,以)结尾,可以包含1个或多个字符,但不包含空格 例如: (ABC)或(AF33)或(2345) 以()开头,以)结尾,可以包含一个或多个字符,包括空格 例如: (一些字符串) 我使用的字符串可能包含零个或多个上述模式。我的要求是在给定字符串中只匹配上面的第二个,并且我希望能够在C#中使用Regex类 例如,假设下面是我拥有的五个不同的字符串 这是一些随机文

我有一组字符串,可能包含某些模式。具体来说,有以下三点

  • 后接10位数字,后接
    开头

    例如:

    (-1234567890)

  • )开头,以
    结尾,可以包含1个或多个字符,但不包含空格

    例如:

    (ABC)或(AF33)或(2345)

  • )开头,以
    结尾,可以包含一个或多个字符,包括空格

    例如:

    (一些字符串)

  • 我使用的字符串可能包含零个或多个上述模式。我的要求是在给定字符串中只匹配上面的第二个,并且我希望能够在C#中使用
    Regex

    例如,假设下面是我拥有的五个不同的字符串

    这是一些随机文本

    这是一些(ABC)随机(-1234567890)文本

    这是一些(XY12)随机(-1234567890)文本

    这是一些(包含空格)随机(-1234567890)文本

    这是一些()随机文本

    My
    Regex
    应该只匹配上面列表中的第二个和第三个字符串

    到目前为止,我已经成功地编写了以下正则表达式,它不包括字符串1和5

    .*\((?!\-).+\).*
    
    这与上面的第二、第三、和第四个字符串相匹配。现在我不知道如何才能排除第四个,它包含括号内的空格。我知道
    \S
    会检测空白,但我如何告诉它检测不包含空格的字符串,这些字符串仅在括号内,并且在第一个
    )之后不包含
    -

    编辑1:

    我的字符串中永远不会有嵌套的括号

    编辑2:

    这是一个例子

    如果使用上述正则表达式,则第二个和第三个字符串仅匹配

    *所有字符

    \(([^- ]+[^ ]*)\)
    
    (法兰提斯)

    \w+所有单词字符(至少一个)

    )法老病

    *所有字符

    \(([^- ]+[^ ]*)\)
    
    如果使用上述正则表达式,则第二个和第三个字符串仅匹配

    *所有字符

    \(([^- ]+[^ ]*)\)
    
    (法兰提斯)

    \w+所有单词字符(至少一个)

    )法老病

    *所有字符

    \(([^- ]+[^ ]*)\)
    
    应该有用

    说明:

    [^-]+
    将首先匹配一个既不是
    -
    也不是
    的字符。这将确保它至少包含一个字符

    然后,
    [^]*
    将匹配0个或多个无空格字符

    \(([^- ]+[^ ]*)\)
    
    这将适用于任何字符集

    应该有用

    说明:

    [^-]+
    将首先匹配一个既不是
    -
    也不是
    的字符。这将确保它至少包含一个字符

    然后,
    [^]*
    将匹配0个或多个无空格字符

    \(([^- ]+[^ ]*)\)
    

    这将适用于任何字符集

    您的字符集是什么?它是否仅限于ascii?是否可以有另一个(在()内)例如(\()ASCII和UTF8都更可取,但如果两者都很难合并的话,即使只有ASCII我也会很高兴。不,永远不会有嵌套的括号。像这样简单的东西就足够了,不是吗。我想你需要。如果你需要包含模式的整个字符串,请使用
    if(Regex.IsMatch(s,pattern)){/*用s*/}
    做点什么。你的字符集是什么?它只包含ascii码吗?有可能有另一个(在()内)像(\()ASCII和UTF8都更可取,但如果两者都很难合并的话,即使只有ASCII我也会很高兴。不,永远不会有嵌套的括号。像这样简单的东西就足够了,不是吗。我想你需要。如果你需要包含模式的整个字符串,请使用
    if(Regex.IsMatch(s,pattern)){/*用s*/}
    做点什么。这似乎很管用,谢谢!你能解释一下吗,可能会出现故障吗?特别是
    (\w|d)+
    部分?
    \w
    将匹配任何“单词字符”(
    \d
    将匹配任何数字。
    (\w|d)
    将匹配一个单词字符或数字。
    (\w|d)+
    将匹配一个或多个单词字符或数字。编辑后,我想知道是否只需
    (\w)+
    对该部分有效,因为
    \w
    似乎也与数字匹配。@huck\u cussler是的,你说得对。我也注意到了这一点,并修正了我的答案。这似乎有效,谢谢!请你解释一下,可能会出现故障吗?特别是
    (\w|\d)+
    部分?
    \w
    将匹配任何“单词字符”().
    \d
    将匹配任何数字。
    (\w|\d)
    将匹配一个单词字符或数字。
    (\w|\d)+
    将匹配一个单词字符或数字中的一个或多个。编辑后,我想知道是否只需
    (\w)+
    适用于该部分,因为
    \w
    似乎也与数字匹配。@huck\u cussler是的,你说得对。我也注意到了这一点,并修正了我的答案。