if (preg_match('/[^a-zA-Z]+/', $test4, $matches))
这将匹配任何非字母数字字符。我只想要一个匹配{ } [ ] * =
而不考虑顺序和它们之间的任何其他字符。这可以做到吗?
我试过\=, \[, \], \{, \}, \*
了,但似乎没有帮助?
我有一个字符串,可能包含也可能不包含列出的字符。我想使用 preg_match 来确定字符串是否包含任何这些字符,无论字符串中的顺序或位置如何。
if (preg_match('/[^a-zA-Z]+/', $test4, $matches))
这将匹配任何非字母数字字符。我只想要一个匹配{ } [ ] * =
而不考虑顺序和它们之间的任何其他字符。这可以做到吗?
我试过\=, \[, \], \{, \}, \*
了,但似乎没有帮助?
我有一个字符串,可能包含也可能不包含列出的字符。我想使用 preg_match 来确定字符串是否包含任何这些字符,无论字符串中的顺序或位置如何。
这是做你想做的吗?
if (preg_match ('/[{}\[\]=*]+/', $test4, $matches))
如果要查找所有匹配项而不仅仅是第一个匹配项,则应使用preg_match_all
.
除等号外,这些字符是正则表达式中的控制字符。您将不得不以不同的方式对待它们。
我建议阅读PCRE 正则表达式语法
要得到你要找的东西,试试这个。
preg_match('/\[(.*)\]/', $test4, $square_matches);
preg_match('/\{(.*)\}/', $test4, $curly_matches);
// or, if this is your approach (it's hard to tell from your description)
preg_match('/([\[\{=\*](.*)[\]\}=\*])/', $test4, $matches);
preg_match('/([\[\{=\*](.*?)[\]\}=\*])/', $test4, $matches); //non-greedy