【问题标题】:Uppercase in regex [closed]正则表达式中的大写[关闭]
【发布时间】:2012-12-16 11:57:34
【问题描述】:

我对正则表达式一无所知,但我需要将变量 ($name) 转换为大写。 有人知道怎么做吗?

另外,学习正则表达式的好网站是什么?

【问题讨论】:

  • 您是否将整个字符串转为大写?如果是这样,只是 "string".toUpperCase() (如果是 JS) - 你使用什么语言?
  • 是的,整个字符串。我需要使用 Perl 正则表达式语法Perl Regex Syntax
  • “我需要使用...”这是作业还是什么?
  • 嗯,没错,我根本不能使用 perl 语法。我不应该提到 Perl。这只是关于正则表达式
  • 正则表达式用于定义模式,因此它们是不够的。你需要替换匹配的字符串,你肯定有。并且您还需要根据匹配的字符串有条件地替换匹配的字符串。这需要能够定义要执行的代码以确定要用作替换字符串的字符串。 ST2有这个能力吗?你问如何转换一个变量(我认为你的意思是它的值),所以我认为你可以使用一些编程语言(否则你不会有变量),所以它可能是可能的。

标签: regex perl sublimetext2


【解决方案1】:

你可以试试

s/(\pL+)/\U$1/g

捕获括号会找到字母,\U escape sequence 会将uc 函数应用于$1 中捕获的文本。 /g 修饰符将在整个字符串中重复匹配。

对于更通用的正则表达式,您可以尝试

s/(.*)/\U\1/g

...匹配所有字符,\1 是旧式捕获序列。

【讨论】:

  • 似乎是个好主意,但我不能只使用 Perl 语法正则表达式。我提到了 perl,但这只是因为 sublime text 2 网站提到了它。这是一个错误。
  • @Atha 嗯,这就是正则表达式s/(\pL+)/\U$1/g。我不知道它是如何在崇高的文本中实现的。对于更通用的正则表达式,您可以尝试s/(.*)/\U\1/g,它匹配所有字符,\1 是旧的捕获序列。
  • 谢谢!我想我会向 sublime 开发团队发送电子邮件以了解更多信息。
  • @Atha 哪个正则表达式适合你?添加到答案中可能会很好。
  • 嗯,我看到您使用\$name 而不是$name,也许这与它有关。
【解决方案2】:

TextPad 将允许您执行此操作。

示例:

test 

查找内容:([^ ]) (.) 替换为:\U\1\E \2

结果将是:

TEST 

【讨论】:

  • 这就是我想要实现的目标,但不必写“查找内容”和“替换为”。
  • 不使用“查找内容”和“替换为”有什么特殊原因吗?
  • 创建新文件时,通过 sublime text 2 中的“FileTemplate”扩展名,我想用 #ifndef $name_H #define $name_H 中的大写版本替换 $name。我尝试使用 Find what 并 Replace with bu 它不起作用。
  • 例如,sublime text 2 中的 sn-p 看起来像这样:''
【解决方案3】:

你真的需要使用正则表达式吗?如果没有看一下 perl tr/// 运算符

【讨论】:

    猜你喜欢
    • 2013-12-25
    • 1970-01-01
    • 2015-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-31
    • 2012-04-08
    相关资源
    最近更新 更多