【问题标题】:iOS: Regular expression: match either quoted string or string without quotesiOS:正则表达式:匹配带引号的字符串或不带引号的字符串
【发布时间】:2023-03-27 04:20:01
【问题描述】:

我需要匹配从两边引用的字符串或根本没有前导和尾随引号的字符串。 我需要省略末尾带有单引号的字符串 - 前导引号或尾引号。

这是我必须匹配的字符串:

  • "somecharsinside"
  • 一些字符

我有不匹配

  • “没有从右边引用”
  • noquotefromtheleft"

我正在尝试这样的事情:^\b.+|^\".^\"\b$

【问题讨论】:

    标签: ios regex match quotes nsregularexpression


    【解决方案1】:

    以下应该有效:

    ^([^\"]*|\".*\")$
    

    任何非"字符
    " + text + "

    或者,如果您不想捕获添加?:

    ^(?:[^\"]*|\".*\")$
    

    regex101 Link

    【讨论】:

    • 哇!非常感谢您的回答!
    • 对我来说,我试图在一个字符串中找到所有引用的单词。例如,var str = "They said \"Its okay\", \"well\" didn't they?",应该给出这两个引用的单词/句子。你能帮我吗?
    • @nr5 你应该问一个问题。这个问题应该包括输入是什么,输出应该是什么(以及为什么)以及您到目前为止尝试过的内容。
    【解决方案2】:

    如果没有正则表达式,这项任务可能会更容易完成:

    if ([s hasPrefix:@"\""] == [s hasSuffix:@"\""]) {
        // String matches
    }
    

    根据文档,在此处使用== 很可能是安全的,这两种方法都在成功时返回YES,而不是任意的非零值。但为了安全起见,您可以按照here 的描述比较 BOOLs

    【讨论】:

    • 我喜欢这个解决方案! :)
    猜你喜欢
    • 2010-09-13
    • 2016-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-28
    • 1970-01-01
    • 2014-05-12
    • 1970-01-01
    相关资源
    最近更新 更多