正则表达式在匹配其他条件时查找不包含 space 的字符串

Regex to find a string that does not contain a space while matching other conditions

我有一堆可能包含特定模式的字符串。具体有以下3.

  1. (- 开头,后跟 10 位数字,然后是 )

    例如:

    (-1234567890)

  2. (开始,以)结束,可以包含1个或多个字符,但没有个空格。

    例如:

    (ABC) or (AF33) or (2345)

  3. (开头,以)结尾,可能包含1个或多个字符,包括个空格。

    例如:

    (Some string)

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

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

This is some random text.

This is some (ABC) random (-1234567890) text.

This is some (XY12) random (-1234567890) text.

This is some (Contains space) random (-1234567890) text.

This is some () random text.

我的 Regex 应该匹配 上面列表中的第 2 和第 3 个字符串

到目前为止,我已经按照正则表达式编写了此代码,其中不包括字符串 1 和 5。

.*\((?!\-).+\).*

这匹配上面的第 2、3、AND 第 4 个字符串。现在我不确定如何才能排除第 4 个,第 4 个在括号内包含空格。我知道 \S 检测空格,但我如何告诉它检测不包含空格的字符串,仅在第一个 ( 之后不包含 - 的括号内?

编辑 1:

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

编辑 2:

这是 Regex Tester.

.*\(\w+\).*

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

.* 所有字符

( pharantesis

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

) 幻化

.* 所有字符

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

应该可以

解释:

[^- ]+ 将首先匹配一个既不是 - 也不是 </code> 的字符,这将确保它至少包含一个字符 </p> <p>那么<code>[^ ]*会匹配0个或更多none个白色space个字符

这适用于任何字符集