0
if (preg_match('/[^a-zA-Z]+/', $test4, $matches))

这将匹配任何非字母数字字符。我只想要一个匹配{ } [ ] * =而不考虑顺序和它们之间的任何其他字符。这可以做到吗?

我试过\=, \[, \], \{, \}, \*了,但似乎没有帮助?

我有一个字符串,可能包含也可能不包含列出的字符。我想使用 preg_match 来确定字符串是否包含任何这些字符,无论字符串中的顺序或位置如何。

4

2 回答 2

2

这是做你想做的吗?

if (preg_match ('/[{}\[\]=*]+/', $test4, $matches))

如果要查找所有匹配项而不仅仅是第一个匹配项,则应使用preg_match_all.

于 2013-04-29T17:04:41.397 回答
0

除等号外,这些字符是正则表达式中的控制字符。您将不得不以不同的方式对待它们。

我建议阅读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
于 2013-04-29T17:16:54.303 回答