Regex 模式匹配字符串中之前的任何字母数字文本

Regex 模式匹配字符串中之前的任何字母数字文本,regex,Regex,我尝试在负号-之前获取字符串中的任何字母数字单词或文本,例如: earth-green, random-stuff, coffee-stuff, another-tag 我尝试将地球随机咖啡与另一个匹配 我尝试了以下正则表达式: (\w*[^][\-]) 但是,它与earth-random-coffee-other- 显示了这种情况。在那里,您可能会注意到,earth-random-coffee-other-被突出显示,而我不希望在突出显示中包含负号-。这是使用正向前瞻正则表达式的一个很好的

我尝试在负号
-
之前获取字符串中的任何字母数字单词或文本,例如:

earth-green, random-stuff, coffee-stuff, another-tag
我尝试将
地球随机咖啡与另一个匹配

我尝试了以下正则表达式:

(\w*[^][\-])
但是,它与
earth-random-coffee-other-


显示了这种情况。在那里,您可能会注意到,
earth-random-coffee-other-
被突出显示,而我不希望在突出显示中包含负号
-

这是使用正向前瞻正则表达式的一个很好的示例

您可以使用这样的正则表达式:

(\w+)(?=-)

另一方面,正则表达式中的问题是,您将hypen和^放在捕获组中:

(\w*[^][\-])
     ^---^---- Here (btw... you don't need [^])
你必须用这个来代替

(\w+)-

这是一个使用正向前瞻正则表达式的好例子

您可以使用这样的正则表达式:

(\w+)(?=-)

另一方面,正则表达式中的问题是,您将hypen和^放在捕获组中:

(\w*[^][\-])
     ^---^---- Here (btw... you don't need [^])
你必须用这个来代替

(\w+)-

这是一个使用正向前瞻正则表达式的好例子

您可以使用这样的正则表达式:

(\w+)(?=-)

另一方面,正则表达式中的问题是,您将hypen和^放在捕获组中:

(\w*[^][\-])
     ^---^---- Here (btw... you don't need [^])
你必须用这个来代替

(\w+)-

这是一个使用正向前瞻正则表达式的好例子

您可以使用这样的正则表达式:

(\w+)(?=-)

另一方面,正则表达式中的问题是,您将hypen和^放在捕获组中:

(\w*[^][\-])
     ^---^---- Here (btw... you don't need [^])
你必须用这个来代替

(\w+)-

有很多不同用例的好例子

有很多不同用例的好例子

有很多不同用例的好例子


许多具有不同用例的好例子

您只需添加一个单词边界和
-
即可将所需内容添加到书签中:

\b(\w+)-

您只需添加一个单词边界和
-
即可将所需内容添加到书签中:

\b(\w+)-

您只需添加一个单词边界和
-
即可将所需内容添加到书签中:

\b(\w+)-

您只需添加一个单词边界和
-
即可将所需内容添加到书签中:

\b(\w+)-

您可以这样匹配它。

   my $string = "earth-green, random-stuff, coffee-stuff, another-tag";
    while ($string =~ m/[\w]*-/g)
    {
        my $temp = $&;
        $temp =~s/-//;
        print "$temp\n";
    }

希望这有帮助。

您可以这样匹配。

   my $string = "earth-green, random-stuff, coffee-stuff, another-tag";
    while ($string =~ m/[\w]*-/g)
    {
        my $temp = $&;
        $temp =~s/-//;
        print "$temp\n";
    }

希望这有帮助。

您可以这样匹配。

   my $string = "earth-green, random-stuff, coffee-stuff, another-tag";
    while ($string =~ m/[\w]*-/g)
    {
        my $temp = $&;
        $temp =~s/-//;
        print "$temp\n";
    }

希望这有帮助。

您可以这样匹配。

   my $string = "earth-green, random-stuff, coffee-stuff, another-tag";
    while ($string =~ m/[\w]*-/g)
    {
        my $temp = $&;
        $temp =~s/-//;
        print "$temp\n";
    }


希望这有帮助。

您在演示中使用的网站在进程表达式期间返回超时错误我认为您的表达式需要是
(\w*)。(?=-)
。勾选@sєmmsєmm实际上不是,您正在使用的页面是不可信的。您可以在我的回答中看到两个工作演示。我建议您改为使用regex101。@sєєsєєm您正在使用的页面会因为
\w*
而晕眩。您可以使用
\w+
轻松修复此问题。您在演示中使用的网站在进程表达式期间返回超时错误。我认为您的表达式应该是
(\w*)。(?=-)
。勾选@sєmmsєmm实际上不是,您正在使用的页面是不可信的。您可以在我的回答中看到两个工作演示。我建议您改为使用regex101。@sєєsєєm您正在使用的页面会因为
\w*
而晕眩。您可以使用
\w+
轻松修复此问题。您在演示中使用的网站在进程表达式期间返回超时错误。我认为您的表达式应该是
(\w*)。(?=-)
。勾选@sєmmsєmm实际上不是,您正在使用的页面是不可信的。您可以在我的回答中看到两个工作演示。我建议您改为使用regex101。@sєєsєєm您正在使用的页面会因为
\w*
而晕眩。您可以使用
\w+
轻松修复此问题。您在演示中使用的网站在进程表达式期间返回超时错误。我认为您的表达式应该是
(\w*)。(?=-)
。勾选@sєmmsєmm实际上不是,您正在使用的页面是不可信的。您可以在我的回答中看到两个工作演示。我建议您改为使用regex101。@sєєsєєm您正在使用的页面会因为
\w*
而晕眩。您可以在regexr.com中使用
\w+
轻松修复此问题,您的模式还返回带有匹配字符的
-
。不,您需要查看匹配组,它不包含连字符。在regexr.com中,您的模式还返回带有匹配字符的
-
。不,您需要查看匹配组,它不包含连字符。在regexr.com中,您的模式还返回带有匹配字符的
-
。不,您需要查看匹配组,它不包含连字符。在regexr.com中,您的模式还返回带有匹配字符的
-
。不,您需要查看匹配组,它不包含连字符。虽然这个答案可以回答这个问题,但也许你可以通过添加一个关于发生了什么以及如何工作的解释来改进你的答案,这样提问者就可以学习,而不是简单地复制和粘贴解决方案。我已经看到了一个非常好的解决方案!上面有解释,但这是一个好主意,谢谢。虽然这个答案可能回答了这个问题,但也许你可以通过添加一个关于发生了什么以及如何工作的解释来改进你的答案,这样,提问者就可以学习,而不是简单地复制和粘贴解决方案。我已经看到了一个非常好的答案!上面有解释,但这是一个好主意,谢谢。虽然这个答案可能回答了这个问题,但也许你可以通过添加一个关于发生了什么以及如何工作的解释来改进你的答案,这样,提问者就可以学习,而不是简单地复制和粘贴解决方案。我已经看到了一个非常好的答案!上面有解释,但这是个好主意,谢谢