主要问题:
是否有一个正则表达式可以保留案例模式\U
and \L
?
理想情况下,它也会尊重单词边界和锚点。
Example
假设我们有大量文本,我们想要将一个单词转换为另一个单词,同时保留单词的大小写。
例如,替换所有实例"date"
with "month"
Input: `"This Date is a DATE that is daTe and date."`
Output: `"This Month is a MONTH that is moNth and month."`
input output
------ -------
"date" ~~> "month"
"Date" ~~> "Month"
"DATE" ~~> "MONTH"
"daTe" ~~> "moNth" ## This example might be asking for too much.
保留单词边界
我对保留单词边界的解决方案感兴趣(即只能匹配“整个单词”)。在给定的示例中,"date"
会改变,但不会改变"dated"
现有的解决方法R
:
我目前使用三个嵌套调用sub
来实现这一目标。
input <- c("date", "Date", "DATE")
expected.out <- c("month", "Month", "MONTH")
sub("date", "month",
sub("Date", "Month",
sub("DATE", "MONTH", input)
)
)
目标是拥有一个单一的pattern
和一个单一的replace
such as
gsub("(date)", "\\Umonth", input, perl=TRUE)
这将产生所需的输出
注释(2023 年更新)
- 问题背后的动机是扩展有关以下人员能力的知识:
RegEx
。下面的示例仅作为说明之用。此问题的目的不是寻找替代解决方法。
- 这个问题是由
R
标签,但会接受调用风味的答案RegEx
目前不可用R