regex - 强制正则表达式匹配值的第一个字母为大写

标签 regex

我正在努力提高正则表达式。我正在使用 regex101.com。我有一个包含两个捕获组的正则表达式。然后我使用替换将我捕获的值合并到另一个位置。

例如我有一个值列表:

fat dogs 
thin cats
skinny cows
purple salamanders
etc...

这将它们捕获到两个变量中:

^([^\s]+)\s+([^\s;]+)?.*

然后我使用 $1 和 $2 将其替换为新句子。例如:

$1 animals like $2 are a result of poor genetics.

(显然这是一个愚蠢的例子)

这行得通,我说出了句子,但我很难尝试强制 $1 的第一个字母大写。我可以看到各种关于匹配大写或小写但不转换为大写的示例。

看来我需要做一些“功能”处理。我需要将 $1 传递给某个东西,然后将其分成两部分...第一个字母和所有其他字母...将第一个字母转换为大写...然后拼凑在一起并返回结果。

添加错误检查...虽然 $1 不太可能有数值,但我们仍应进行某种安全检查。

因此,如果有人能指出阅读 Material ,我将不胜感激。

最佳答案

正则表达式只会匹配那里的内容。你所做的本质上是:

  • 匹配项目
  • 显示匹配项

但是你想做的是:

  • 匹配项目
  • 修改匹配项
  • 显示修改后的匹配项

正则表达式不会对匹配项进行任何“处理”,它只是一种用于首先查找匹配项的语法。

大多数语言都有字符串处理,例如,如果你在变量 $1$2 中进行匹配,你会想要做一些类似的事情:

$1 = upper(substring($1, 0, 1)) + substring($1, 1)

假定 upper() 函数,如果您使用语言的字符串大写函数,并且 substring() 返回一个子字符串(零索引)。

关于regex - 强制正则表达式匹配值的第一个字母为大写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30622567/

相关文章:

python - 相互包含的高效字符串

regex - 从 Bash 脚本中删除注释的正则表达式

R 中的正则表达式 - 以 "OR"方式组合两种模式。无法发现错误。

javascript - 用于匹配字符串维度的正则表达式模式

python - 正则表达式 Python [python-2.7]

java - 如何在java中进行preg_replace

regex - 使用下一个匹配作为分隔符来匹配字符串

regex - 正则表达式中的重叠匹配 - Scala

regex - 使用 sed 在 cygwin 中替换 ""string"\1\"787"到 "string"\1\"787"

Oracle SQL 中的正则表达式,正向展望