如何用regexp表示;匹配到一个模式,但不包括该模式;?

如何用regexp表示;匹配到一个模式,但不包括该模式;?,regex,Regex,我有以下意见: {http://sdfgdf.dfg.dfg.dfg#value1 : http://sdfgdf.dfg.dfg.dfg#value2} 我只想匹配第一个URL中的值1。 我认为下面的regexp: [^#]\w*\s: 但这与“值1: 我如何表达“匹配到\s:,而不包括该模式?零宽度前瞻。在中,您可以这样做: [^#]\w*(?=\s:) 您可能会考虑使这个正则表达式更灵活,以处理额外的空格等…以防输入与您期望的稍有不同。老实说,如果您的输入总是这么简单,我就不会使用正

我有以下意见:

{http://sdfgdf.dfg.dfg.dfg#value1 : http://sdfgdf.dfg.dfg.dfg#value2}
我只想匹配第一个URL中的值1。 我认为下面的regexp:

[^#]\w*\s:
但这与“值1:

我如何表达“匹配到\s:,而不包括该模式?

零宽度前瞻。在中,您可以这样做:

[^#]\w*(?=\s:)

您可能会考虑使这个正则表达式更灵活,以处理额外的空格等…以防输入与您期望的稍有不同。

老实说,如果您的输入总是这么简单,我就不会使用正则表达式。例如,您可以在“”上进行字符串拆分并获取第一项

myInput.Split(" ")[0]; // Example in C#
或者你可以做一个子串

myInput.Substring(0, myInput.IndexOf(" "));
但是如果你真的对正则表达式感兴趣

(?=.*\s)[^\s]+

该正则表达式的内容是:“前面某个地方有空格,请匹配任何非空格的字符。”

我只想使用正则表达式来更熟悉regular exxpressions。上面的正则表达式匹配整个“”字符串。我只想要”值1“与模式匹配。这只匹配值1后的空格。它不起作用。但我不明白为什么。对我来说,它是:Match和word character->*次,从非“#”字符开始,直到您看到\s(空格)和“:”@Iraklis之后。我不知道您是如何测试的,但它确实起作用。我已经发布了,没有测试,现在我只是测试,它的工作。第二个版本稍微安全一点:
(?是的,你是对的,这是我的错。无论如何,谢谢。对我来说,前瞻性非常有用。所以它类似于:“heyy regex机器不匹配只是断言。”@Iraklis这是因为这些是“积极的前瞻”。同样,“消极的前瞻”听起来像“这不能在比赛之后/之前”。名称“lookahead”本身就足够了,它可以快速查看比赛,而不返回lookahead正则表达式的比赛。