这是我的字符串
你好,我的朋友,我想向大家问好
我正在使用以下正则表达式将 hello匹配到所有人,但是由于某种原因,它匹配了整个字符串。
你好(。*?)你
我认为是因为我正在使用通配符匹配。我希望开始是你好,结束是你,并且要在这两者之间得到任何东西,而不是整个字符串。
我的正则表达式完全忽略了你好内在的单词,并给了我广泛的匹配。我希望它狭窄。
答案 0 :(得分:1)
您的正则表达式工作正常。您的字符串以hello
开头,以you
结尾。防止这种情况的一种方法是限制要匹配的字符,例如逗号。这样,它将仅匹配字符串的最后一部分。
(hello(\w| )+you)
这里我只匹配单词,所以逗号不计算在内。
您可以尝试更多案例here
答案 1 :(得分:0)
您在这里:.*(hello.+you).*
(js格式,不区分大小写:var regex=/.*(hello.+you).*/i
)
详细信息在这里:Regex101
在链接中,我使用g + m标志,因此它可以匹配更多的内容,如果不希望与多行匹配,请使用var regex=/.*(hello.+you).*/igm
,但它应该只与出现该行的第一行匹配,但是idk会发生什么组数据选择器,不是专家,而是通过谷歌搜索和试错修改正则表达式为您找到答案的方法,希望对您有所帮助。
p / s:如果要允许下一个匹配,则将中间的。+替换为。*,例如:helloyou。
答案 2 :(得分:0)
如果您希望获得最后的“你好”,直到最后一个“你”,都可以使用
.*(hello.*you)
由于贪婪的.*