如何使正则表达式匹配空格或字符串结尾?

时间:2014-03-12 13:46:21

标签: php regex

我需要制作一个正则表达式以匹配一些液体量,如:

water in 17oz container
water in container 17oz

你如何制作正则表达式以匹配这些? 我可以做/[0-9]{1,}oz/,但这也会匹配90ozonelayers,而不是它会发生,但我希望它是万无一失的。

如果它位于字符串的末尾,那么/[0-9]{1,}oz /将无法匹配它。

4 个答案:

答案 0 :(得分:1)

您可以使用\b来匹配字边界:

/\b[0-9]+oz\b/

答案 1 :(得分:0)

[0-9]{1,}oz(\s|\b)

这与您的两个字符串匹配,但与12ozsdsds之类的内容不匹配。

修改

注意到所有解决方案都存在轻微缺陷,似乎是所有事情的组合,最好的可能是(来自 tenub 的被盗位):

/(?<=\s|^)[0-9]{1,}oz(?=\s|$)/(使用/g匹配所有匹配项)。

17oz - 匹配

abc 17oz def - 匹配

17ozz - 不匹配

abc17oz - 不匹配

答案 2 :(得分:0)

简单。只需使用:

/[0-9]{1,}oz(?= |$)/

答案 3 :(得分:0)

在弦乐的末尾匹配34盎司,34盎司和6盎司,但不是56ozone层。

([0-9]{0,})(\s{0,})(oz{1})(\s{0,}|$)