Regex 正则表达式以匹配除字符组合以外的所有字符

Regex 正则表达式以匹配除字符组合以外的所有字符,regex,Regex,我爱上了Regex,但有一件“简单”的事我做不到。我已经为此挣扎了一段时间(这很有趣!),所以我想一些帮助会很好。谢谢你已经阅读了这个请求 我有以下字符串,我想匹配其中的某些部分: this is cool--this is nice--this-is-it 我想要一个正则表达式,它将返回三个匹配项,即: this is cool this is nice this-is-it 我试图匹配任何由双破折号(-)分隔的文本,但是,单破折号应该被视为其他字符。到目前为止,我已经尝试了一些方法,

我爱上了Regex,但有一件“简单”的事我做不到。我已经为此挣扎了一段时间(这很有趣!),所以我想一些帮助会很好。谢谢你已经阅读了这个请求

我有以下字符串,我想匹配其中的某些部分:

this is cool--this is nice--this-is-it
我想要一个正则表达式,它将返回三个匹配项,即:

this is cool

this is nice

this-is-it
我试图匹配任何由双破折号(-)分隔的文本,但是,单破折号应该被视为其他字符。到目前为止,我已经尝试了一些方法,但是我离这个正则表达式越近:
/[^(-)]+/gm
。该正则表达式当前返回5个匹配项,可在此处可视化:

谢谢大家!

[^(-)]
并不是你认为它的意思。
[…]
中的任何内容只匹配一个字符,因此
[^…]
不能排除任何超过1个字符的组合

你需要的是或

对于您的特定情况(假设一行中不超过2个
-
-
出现在字符串的开头或结尾),您只需匹配
-
或字符串的开头和结尾之间的任何内容,即可将其编写为

(?<=--|^).*?(?=--|$)
然后你可以从第1组中得到结果。

[^(-)]
并不是你认为它的意思。
[…]
中的任何内容只匹配一个字符,因此
[^…]
不能排除任何超过1个字符的组合

你需要的是或

对于您的特定情况(假设一行中不超过2个
-
-
出现在字符串的开头或结尾),您只需匹配
-
或字符串的开头和结尾之间的任何内容,即可将其编写为

(?<=--|^).*?(?=--|$)
然后您可以从组1中获得结果。

(.+?)(?:-|$)

既然您似乎想使用正则表达式拆分字符串,那么尝试查找以
--
或字符串结尾(
$
)结尾的所有长度的字符串怎么样。这些将为您提供一个列表,其中包含您希望在第一个捕获组中访问的字符串的所有匹配项

但是,如果只需要使用单个分隔符分割字符串(即
--
),则应使用编程语言的字符串分割功能。在这种情况下,如果需要使用多个分隔符(例如,
--
|
::

(.+?)(?:--$)

既然您似乎想使用正则表达式拆分字符串,那么尝试查找以
--
或字符串结尾(
$
)结尾的所有长度的字符串怎么样。这些将为您提供一个列表,其中包含您希望在第一个捕获组中访问的字符串的所有匹配项


但是,如果只需要使用单个分隔符分割字符串(即
--
),则应使用编程语言的字符串分割功能。在这种情况下,如果需要使用多个分隔符(例如
--
|
::
)进行拆分,则正则表达式非常有用。

这是否回答了您的问题?根据链接的复制目标中的答案改编:
-(*跳过)(*失败)|(?:(?!-)+
。请注意,如果不必使用正则表达式,则任何
string.split('--')等价物将更有效、更清晰。如果您有
x--y
,会发生什么?这是
x-
y
还是
x
-y
?这回答了你的问题吗?根据链接的复制目标中的答案改编:
-(*跳过)(*失败)|(?:(?!-)+
。请注意,如果不必使用正则表达式,则任何
string.split('--')等价物将更有效、更清晰。如果您有
x--y
,会发生什么?是
x-
y
还是
x
-y
?非常感谢!我从你身上学到了很多,非常感谢!我从你那里学到了很多