【发布时间】:2020-10-03 17:28:44
【问题描述】:
我是正则表达式的新手,并研究了可能的匹配表达式。但是我找不到我需要的东西。我想要的是删除匹配某个表达式的单词。该表达式将匹配所有忽略空格、制表符和换行符的单词。我无法在 ruby 中找到正确的正则表达式。
例如:
string = 'hello world welcome'
我需要做的是将某些匹配的单词替换为以“w”开头并以“d”结尾的单词。
string.gsub(/^w.*d$/, 'human')
但我无法忽略(转义)空格(不替换)、制表符和新行。
有人可以帮忙吗?我尝试使用下面的正则表达式来逃避,但它没有发生。
string.gsub(/^w.*d$\s/, 'human')
'hello world welcome' 必须更改为 'hello human welcome',而不删除字符串中的空格、制表符和换行符。
这是我可以了解更多关于正则表达式的地方,尤其是 ruby。
【问题讨论】:
-
看来您可能想要
string.gsub(/\b\w[a-z]*d\b/i, 'human') #=> "hello human welcome"之类的东西。你不想要任何一个锚。^将要求'world'位于要匹配并因此替换的行的开头。同样,$将要求'world'位于要匹配的行尾。单词边界,\b(又名“单词中断”)。如果字符串是'Hello underworld welcome'和'Hello worldly welcome',则阻止匹配。/i使正则表达式 大小写无关,因此它将匹配'World'。