嗨我需要有关正则表达式的两个任务的帮助我是一个新手,看了各种教程但找不到答案。
如何重复逗号后面的单词?
例如,我想找到替换每次出现的,并用它后面的单词替换它
例如:猫和狗 - >猫,和狗
如何替换以“i”或“t”开头的单词除了单词I
例如,我想替换它 - >我想(新词)替换(新词)
答案 0 :(得分:2)
将, ((\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
是您要用
答案 1 :(得分:0)
第一个正则表达式是:
,\s*(\w+)
你会使用$ 1或\ 1反向引用,具体取决于你的语言。
第二个正则表达式是:
[iITt]\w+
你不需要任何反向引用。
答案 2 :(得分:0)
尝试:
preg_replace("/,\s*([^\s]++)/", ", $1 $1", $string);
这称为分组和反向引用。而不是1美元,你也可以使用\\ 1。
答案 3 :(得分:0)
这是自动代码。也许它有助于理解
$var = 'This is the test, HelloWorld yeah!'
ConsoleWrite(StringRegExpReplace($var, ',(\s*[a-zA-Z]+)', '$1$1') & @CRLF)