PHP:查找所有以“quot;”开头的单词:&引用;
您能帮助我使用PHP函数/regex,在给定文本中查找所有以字符“:”开头的单词吗 …换言之,所有以“:”开头并以“”分隔的子字符串(空格)这将起作用:PHP:查找所有以“quot;”开头的单词:&引用;,php,regex,Php,Regex,您能帮助我使用PHP函数/regex,在给定文本中查找所有以字符“:”开头的单词吗 …换言之,所有以“:”开头并以“”分隔的子字符串(空格)这将起作用: preg_match('/^:\w*\s$/g', $var); 正则表达式:/:\w+\s/g \w匹配任何单词字符 \s匹配空白字符 既然:word应该是有效的,我想:word:other应该被视为两个单词,那么你就不能说总是有空格 自然语言中的单词后面可以跟点和其他字符。 在数字输入中,它们可以后跟行尾 我建议使用此regexp: ~
preg_match('/^:\w*\s$/g', $var);
正则表达式:
/:\w+\s/g
- \w匹配任何单词字符
- \s匹配空白字符
既然
:word
应该是有效的,我想:word:other
应该被视为两个单词,那么你就不能说总是有空格
自然语言中的单词后面可以跟点和其他字符。在数字输入中,它们可以后跟行尾 我建议使用此regexp:
~:\w+~
它采用任何:
字符,后跟至少一个字母字符,并以任何无效字母结尾
例如:
您也可以尝试~:\w+\b~
,其中\b
是单词的边界(字面上是单词的结尾),但我认为这里没有必要
注:\w
代表[a-zA-Z0-9\
意思是它也捕捉下划线\
和数字0-9
。它的工作原理与PHP中的变量/函数命名非常相似
编辑(有关用法的一些注释): 您说过,在给定的文本中(我理解,就像随机输入一样),您希望提取所有以
:
开头的单词,例如:word
。要轻松做到这一点,您应该使用带有PREG\u PATTERN\u ORDER
标志的函数
例如:
$regex = '~(:\w+)~';
if (preg_match_all($regex, $input, $matches, PREG_PATTERN_ORDER)) {
foreach ($matches[1] as $word) {
echo $word .'<br/>';
}
}
$regex='~(:\w+);
if(preg_match_all($regex,$input,$matches,preg_PATTERN_ORDER)){
foreach($matches[1]为$word){
回显$word.“
”;
}
}
对不起,因为我不使用PHP。但我认为您的问题在于PHP会在其正则表达式实现中保留字符“:”?
在这种情况下,您仍然可以捕获任何以“:”开头并以空格结尾的单词:
(……)
(“3A”是58的十六进制值,是“:”的ASCII码)
这应该行得通,我想…以空格结尾?到目前为止你都试过什么?(顺便说一句:url不是:
http://www.weWriteYourCode.com
)从什么时候开始单词以空格结尾?我一直认为单词不能包含空格。所有的生活都错了……福林:哦,你是对的——空格只用作分隔符,不包括在单词中。它后面还能跟一个吗。!?或行的结尾?查找一个单词,以:
开头,以任意数量的空格结尾。甚至都不符合要求。有多少空格?从何时开始,请在正则表达式测试仪中尝试此操作;)啊,是的。我误读了*
位置。遗憾的是:)虽然没有改变要点,但你只匹配一个单词,从<代码>开始:并在一个空间中结束。我会考虑把它封装在<代码> \b/COD>(Word界线)而不是使用空白空间组,因为他正在寻找单词。单词可以以点
、感叹号结尾代码>等。\b
类说明了点和感叹号。它匹配任何非单词字符它实际上就是针对这种情况而设计的。对单个字符使用[]
分组是对可读性的浪费^
代表输入的开始,OP没有说他是否只想提取输入中的第一个单词,而是说他想提取输入中的所有单词:
不是保留的正则表达式字符,除非在特定的组合中(如(?:
)您对\b
字符有一点看法。在\w+
之后使用时,它实际上不是必需的。但是,如果文本包含非ASCII字符,\w
可能是一个问题。我不确定它的字面意思是否是[A-za-z0-9_307;]
,或者如果它包含非ASCII字符。-如果不包含,则可能必须更像(:.+?)\b
,或者可能使用Unicode类:(:\p{L})
除非我们得到一些示例输入,否则很难说清楚。像编码这样的一切可能也是服务器配置的问题,我不确定。\w
不接受拉丁字符,我总是将其作为[a-zA-Z0-9]的缩写使用
。但我想OP希望以类似的方式使用它,它在PDO
中用于准备状态,而且ASCII应该足够了。
match('^\x3A[.]*[\s]');