【问题标题】:How can I detect if the first word in a substring is completely in upper case?如何检测子字符串中的第一个单词是否完全大写?
【发布时间】:2018-09-24 19:42:21
【问题描述】:

我正在尝试编写一个正则表达式,它将在谷歌表中返回这些结果。单词大写和大小写都在同一个单元格中,包括逗号。我也在寻找一种在 Google 应用程序脚本中完成此任务的方法,但这不是必需的。

"UPPER, Case"        =TRUE
"Upper, CASE"        =FALSE
"uPPER, case"        =FALSE
"UppEr, caSe"        =FALSE
"UPPER, case"        =TRUE
"uPPer, case"        =FALSE

如您所见,仅当整个第一个单词为大写时才返回true。

它还应该忽略逗号和第二个单词。

所以我尝试了这个:

^[A-Z][A-Z]*\W?

^[A-Z] = check first letter to make sure it is a capital letter
[A-Z]* = any amount of the following letters should be capitalized
\W? = ignore anything following and including the first special character (right?)

如果我做错了,请告诉我!我没有得到预期的结果。

【问题讨论】:

    标签: regex google-apps-script google-sheets


    【解决方案1】:

    您的匹配正则表达式应如下所示。

    ^[A-Z]+,\s\w*$
    

    【讨论】:

    • 这非常有用,但是,当逗号前有空格时它不起作用(在我的工作表中,有时有),但谢谢你这很好用!
    • 在这种情况下使用这个:^[A-Z]+\s?,\s?\w*$
    • 你成功了!感谢您的时间和对细节的关注!
    【解决方案2】:

    你可以试试这样([A-Z]{1}[A-Z]+)

    此代码验证第一个字母是否为大写,然后验证其余部分

    您可以在此站点http://www.gethifi.com/tools/regex 中测试您的正则表达式代码

    【讨论】:

    • 或 ([A-Z][A-Z]+)
    • 你只需要[A-Z]+ 其他都是多余的。
    • 但如果只输入 [A-Z]+ 它将采用任何大写字母
    • 这就是重点。 [A-Z]+ 匹配一个或多个大写 A-Z 字符类。你的 re 模式至少需要两个大写字母,而我的只需要一个……你也可以写成 [A-Z]{2,}
    • "UPPER, Case" =TRUE "Upper, CASE" =FALSE "uPPER, case" =FALSE "UppEr, case" =FALSE "UPPER, case" =TRUE "uPPer, case" =FALSE
    【解决方案3】:

    试试这个正则表达式:

    [A-Z]+[,\s|\s,][[A-Z].{1}|[a-z].{1}[a-z]+
    

    解释:
    [A-Z]+ - 确实抓住了所有的大写字母。 但是你要确保两件事。首先,有一个词,这就是为什么你应该使用+
    ,\s - 我为你的模式添加了这部分 - 它有一个直接的前言含义(空格和逗号

    【讨论】:

    • 这对我不起作用。无论大小写如何,这都会返回 true。我想知道 Google 表格是否没有明确检查大写字母。
    猜你喜欢
    • 2021-08-19
    • 1970-01-01
    • 2018-07-09
    • 2010-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多