Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP:查找所有以“quot;”开头的单词:&引用;_Php_Regex - Fatal编程技术网

PHP:查找所有以“quot;”开头的单词:&引用;

PHP:查找所有以“quot;”开头的单词:&引用;,php,regex,Php,Regex,您能帮助我使用PHP函数/regex,在给定文本中查找所有以字符“:”开头的单词吗 …换言之,所有以“:”开头并以“”分隔的子字符串(空格)这将起作用: preg_match('/^:\w*\s$/g', $var); 正则表达式:/:\w+\s/g \w匹配任何单词字符 \s匹配空白字符 既然:word应该是有效的,我想:word:other应该被视为两个单词,那么你就不能说总是有空格 自然语言中的单词后面可以跟点和其他字符。 在数字输入中,它们可以后跟行尾 我建议使用此regexp: ~

您能帮助我使用PHP函数/regex,在给定文本中查找所有以字符“:”开头的单词吗

…换言之,所有以“:”开头并以“”分隔的子字符串(空格)

这将起作用:

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]');