我正在努力提高正则表达式。我正在使用 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/