如何在字符串中查找特定短语?

时间:2015-08-29 00:08:09

标签: php regex string text

我正在尝试检查hello3his12形式的短语,例如$str="hello3hi",在这种情况下$string,在字符串$num中是否存在,如果它确实将[num]的值返回为$num=12,在这种情况下$string ="(dont:jake3rs120 [mik])"; $str = "jake3r"; if(preg_match('~^'.$str.'s([0-9]+)$~', $string)){ echo 'phrase exists'; }else{ echo'phrase does not exist'; }

这是我试图检查$ string

中存在短语的位置
from flask import Flask, request
app = Flask(__name__)

@app.route("/articles")
def do_something_with_user_id():
    do_something(request.headers.get("user-id"))

if __name__ == "__main__":
    app.run()

问题是这总是返回false,有人知道为什么吗?

1 个答案:

答案 0 :(得分:1)

正如马里奥在评论中所说,^匹配字符串的开头,$字符串的结尾。因此,在您的示例代码中,preg_match会返回false,因为您要匹配的字符串两边的字符串中还有其他字符:

(dont:jake3rs120 [mik])

如果$string的值为jake3rs120,则您的代码可以使用。

为了使其与您的示例字符串匹配,只需删除^$

if(preg_match('~'.$str.'s([0-9]+)~', $string)) {
    echo 'phrase exists';
} else {
    echo'phrase does not exist';
}

要获取s之后的数字,请使用preg_match的第三个参数:

if(preg_match('~'.$str.'s([0-9]+)~', $string, $matches)) {
    echo 'phrase exists';
    echo $matches[1]; // Echoes the number after s.
} else {
    echo'phrase does not exist';
}