【问题标题】:Searching XCode for strings starting with _在 XCode 中搜索以 _ 开头的字符串
【发布时间】:2017-01-08 16:59:13
【问题描述】:

我读到: Regular Expression to match string starting with "stop"

我想在 XCode 中使用正则表达式搜索来搜索所有以 _ 字符开头的字符串(以防万一),我最初认为我可以使用 ^_ 进行搜索,但这只会返回以开头的行使用 _ 他们排除带空格的行。

我希望我的搜索返回以下所有内容:

_foo
 _bar
  _baz

例如并排除诸如

之类的东西
foo_bar 
#_
  wholeWord_anotherWord

或任何其他不以 '_' 开头后跟 myString 的字符串(例如 _myString 是所需的结果)。基本上我正在寻找遵循 _ 命名约定的所有变量。

我读到:How to ignore whitespace in a regular expression subject string?

我尝试了"\s*^_",但只返回了'new line'_aString。我误解了解决方案吗?什么会给我任何 _variable 的正确响应?

【问题讨论】:

  • @WiktorStribiżew 可以找到 ,_bar foo_baz 等内容。
  • 匹配以 _ 开头,然后包含一个或多个字母、数字或下划线的整个单词。我不认为你的规格很清楚,所以我只是建议一些听起来相似的东西。它不一定对你有用,当然,它只是在黑暗中的一个镜头。
  • \b_\w+ for me in xcode 使用正则表达式搜索返回不以 _ 开头的整个单词。例如它返回我 foo_bar。
  • 嗯,它支持lokbehinds吗?试试(?<!\w)_\w+
  • 您的解决方案返回 _foo 和 /_foo。在查看结果后,它允许输入所需的结果和以 / 开头的结果。

标签: regex xcode


【解决方案1】:

我最初以为我可以使用 ^_ 进行搜索,但这只会返回以 _ 开头的行,它们会排除带空格的行

鉴于:

  • 您说^_ 适用于不以空格开头的行;和
  • 您希望排除诸如 foo_bar 之类的行(或" foo_bar"
  • 您正在使用 Xcode 正则表达式搜索框

那么我找到了以下任意一种组合:

  • ^\s*_
  • ^\s+?_
  • ^[:space:]*_

将返回以下各项的匹配项:

_foo
 _bar
  _baz

请注意,[:space:] 字符类占所有空格(制表符、换页符、回车等)。

您可以通过将(.*$)分别添加到上述正则表达式'来返回以任何这些条件开头的整个字符串;

  • (^\s*_\w+)(\s*)(.*$)
  • (^\s+?_\w+)(\s*)(.*$)
  • (^[:space:]*_\w+)([:space:]*)(.*$)

如果需要分隔,则反向引用 \1 将是 _var,反向引用 \3 将是 _var 之后的字符串(如果以空格分隔)。

【讨论】:

  • 您是如何使[:space:] POSIX 字符类在括号表达式之外使用的?它永远不会按预期工作。 [:space:] 这样将被解析为 NFA 字符类,并将匹配单个 :。或space 字符。
猜你喜欢
  • 2022-11-01
  • 2012-02-07
  • 1970-01-01
  • 2011-03-01
  • 2020-05-05
  • 1970-01-01
  • 2021-08-14
  • 2013-03-08
  • 2018-01-11
相关资源
最近更新 更多