【问题标题】:Regex to split PascalCase string into separate words正则表达式将 PascalCase 字符串拆分为单独的单词
【发布时间】:2017-08-16 06:02:47
【问题描述】:

之前将 PascalCase 字符串拆分为单独的单词,我使用了下面的正则表达式:

(.)([A-Z]|\d+)

这适用于Photo100PhotoMaxPhotoMaxOrig 等输入。但是当遇到像Photo100Orig 这样的字符串时,我上面的正则表达式不会将该字符串分成三部分。

如何更优雅地修改我的正则表达式以支持Photo100Orig 等字符串?

【问题讨论】:

  • 试试(.)([A-Z]|\d*(?=\d))
  • 如果您的字符串只包含 ascii 字母和数字,您可以使用 \B([A-Z]|\d+) 和 `$1` 作为替换。

标签: regex


【解决方案1】:

假设 C# 作为您的语言,

var pattern = @"(?<!^)(?=[A-Z]|(?<!\d)\d)";

可用于

var words = Regex.Split(input, pattern);

获取单词组件的数组。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多