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)
(
)开头,以)
结尾,可以包含一个或多个字符,包括空格
例如:
(一些字符串)
Regex
类
例如,假设下面是我拥有的五个不同的字符串
这是一些随机文本
这是一些(ABC)随机(-1234567890)文本
这是一些(XY12)随机(-1234567890)文本
这是一些(包含空格)随机(-1234567890)文本
这是一些()随机文本
MyRegex
应该只匹配上面列表中的第二个和第三个字符串
到目前为止,我已经成功地编写了以下正则表达式,它不包括字符串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是的,你说得对。我也注意到了这一点,并修正了我的答案。