嗨,我需要正则表达式的两项任务帮助我是新手,看了各种教程,但找不到答案。
你如何重复逗号后面的单词?
例如,我想找到每次出现的替换,并将其替换为它后面的单词
例如:猫和狗 --> 猫和狗
你如何替换以“i”或“t”开头的单词,除了单词 I
比如我要替换这个 --> 我要(新词)替换(新词)
替换, ((\w)+)
为, \1 \1
。
\w
表示单词字符(通常[A-Za-z0-9_]
)
(\w)+
表示一个或多个单词字符
\1
表示第一个表达式中括号中出现的第一件事((\w)+
在这种情况下),并且重复两次,因为\1 \1
替换(\s|^)((i|I)\w+|(t|T))
为\1NEWWORD
。
(a|b)
意味着a
或b
^
表示行的开始
\s
表示空格
所以(\s|^)
意味着空格或行首
(i|I)
表示小写或大写i
(i|I)\w+
表示字母i
后跟一个或多个字符
(t|T)
表示小写或大写t
((i|I)\w+|(t|T))
表示字母i
后跟一个或多个字符或该字母t
NEWWORD
是您要替换的单词
第一个正则表达式是:
,\s*(\w+)
您将使用 $1 或 \1 反向引用,具体取决于您的语言。
第二个正则表达式是:
[iITt]\w+
而且您不需要任何反向引用。
尝试:
preg_replace("/,\s*([^\s]++)/", ", $1 $1", $string);
这称为分组和反向引用。除了 $1,您还可以使用 \\1。
这是 Autoit 代码。也许有助于理解
$var = 'This is the test, HelloWorld yeah!'
ConsoleWrite(StringRegExpReplace($var, ',(\s*[a-zA-Z]+)', '$1$1') & @CRLF)