你得read the manual几百次,它最终会来找你。
否则,你要抓住什么可以表示为“寻找‘JAC’后跟0或多个字母*,并确保它不是由一个字母开头”它给你:/(?<!\\w)(jac\\w*)/i
这里的与preg_match_all()
一个例子,让你可以捕捉所有的模式的出现次数,不只是第一:
$q = "/(?<!\\w)(jac\\w*)/i";
$str = "I bought a jacket yesterday.
Jack is going home.
I want to go to Jacksonville.";
preg_match_all($q,$str,$matches);
print_r($matches[1]);
- 注:由“信”我的意思是任何“单词字符”。它正式包含数字和其他“单词字符”。根据确切的情况,一个可能更喜欢\ W(字字符)或\ B(字边界)
您可以通过使用一个character class包括额外的字符。例如,为了匹配任何单词字符以及单引号,您可以使用[\w']
和你的正则表达式变成:
$q = "/(?<!\\w)(jac[\\w']*)/i";
或者,你可以添加一个可选's
到您现有的模式,让你捕捉“江淮”后跟任意数量的单词字符随后任选地“的”
$q = "/(?<!\\w)(jac\\w*(?:'s)?)/i";
这里,括号内的?:
意味着你实际上并不需要捕捉的内容(因为他们已经内一对括号,这是没有必要的),并在?
之后括号表示匹配是可选的。
显示您现有的代码:-) – Erik 2010-12-03 03:41:11
特别是你试图使用的正则表达式! – GWW 2010-12-03 03:43:12