替换和查找正则表达式(新手)

时间:2013-02-21 21:20:41

标签: regex replace find

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

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

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

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

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

    例如,我想替换它 - >我想(新词)替换(新词)

4 个答案:

答案 0 :(得分: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是您要用

  3. 替换它的词

答案 1 :(得分:0)

第一个正则表达式是:

,\s*(\w+)

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

第二个正则表达式是:

[iITt]\w+

你不需要任何反向引用。

答案 2 :(得分:0)

尝试:

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

这称为分组和反向引用。而不是1美元,你也可以使用\\ 1。

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

答案 3 :(得分:0)

这是自动代码。也许它有助于理解

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

ConsoleWrite(StringRegExpReplace($var, ',(\s*[a-zA-Z]+)', '$1$1') & @CRLF)