-2

嗨,我需要正则表达式的两项任务帮助我是新手,看了各种教程,但找不到答案。

  1. 你如何重复逗号后面的单词?

    例如,我想找到每次出现的替换,并将其替换为它后面的单词

    例如:猫和狗 --> 猫和狗

  2. 你如何替换以“i”或“t”开头的单词,除了单词 I

    比如我要替换这个 --> 我要(新词)替换(新词)

4

4 回答 4

2
  1. 替换, ((\w)+), \1 \1

    \w表示单词字符(通常[A-Za-z0-9_]

    (\w)+表示一个或多个单词字符

    \1表示第一个表达式中括号中出现的第一件事((\w)+在这种情况下),并且重复两次,因为\1 \1

  2. 替换(\s|^)((i|I)\w+|(t|T))\1NEWWORD

    (a|b)意味着ab

    ^表示行的开始

    \s表示空格

    所以(\s|^)意味着空格或行首

    (i|I)表示小写或大写i

    (i|I)\w+表示字母i后跟一个或多个字符

    (t|T)表示小写或大写t

    ((i|I)\w+|(t|T))表示字母i后跟一个或多个字符或该字母t

    NEWWORD是您要替换的单词

于 2013-02-21T21:30:42.693 回答
0

第一个正则表达式是:

,\s*(\w+)

您将使用 $1 或 \1 反向引用,具体取决于您的语言。

第二个正则表达式是:

[iITt]\w+

而且您不需要任何反向引用。

于 2013-02-21T21:27:41.783 回答
0

尝试:

preg_replace("/,\s*([^\s]++)/", ", $1 $1", $string);

这称为分组和反向引用。除了 $1,您还可以使用 \\1。

更全面的指南:http ://www.regular-expressions.info/brackets.html

于 2013-02-21T21:30:39.027 回答
0

这是 Autoit 代码。也许有助于理解

$var = 'This is the test, HelloWorld yeah!'

ConsoleWrite(StringRegExpReplace($var, ',(\s*[a-zA-Z]+)', '$1$1') & @CRLF)
于 2013-02-21T21:30:47.683 回答