我正在尝试检查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,有人知道为什么吗?
答案 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';
}