gpt4 book ai didi

regex - 如何匹配某个不包含星号的字符串?

转载 作者:行者123 更新时间:2023-12-02 21:56:12 24 4
gpt4 key购买 nike

我有一个正则表达式,可以捕获数字符号后面的关键字:

/^#\s*([a-zA-Z\-\s]+)/

但是,我需要更改正则表达式以指定匹配包含星号的字符串。例如,我需要正则表达式来匹配 # keywords,但 # *keyword

以下是我解决此问题的最佳尝试:

/^#\s[^[*]]*([a-zA-Z\-\s]+)/

我是 Perl 的新手,所以我确信解决方案非常简单,但我花在研究和反复试验上的时间并没有给我带来多大帮助。

最佳答案

假设我理解正确,你的第一个正则表达式就很好。由于它是白名单并且星号字符不在其中,因此它不会匹配包含星号字符的关键字:

/^#\s*([a-zA-Z\-\s]+)/

这仍然会匹配以下内容:

# key*word

...尽管只有key会被匹配。如果您确定只有关键字会占据该行的其余部分,则一种解决方案是强制仅白名单字符出现直到该行末尾,如下所示:

/^#\s*([a-zA-Z\-\s]+)$/

这是另一种选择。如果您只想确保初始哈希和空格之后的第一组字符不包含星号,您可以使用:

/^#\s*([a-zA-Z\-]+)(?:\s|$)/

这将匹配:

# keyword foo

它将匹配:

# keyword

但它不会匹配:

# key*word foo

也不:

# key*word

也不:

# key* word foo

也:

# **** keyword

关于regex - 如何匹配某个不包含星号的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17749627/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com