Regex 用于名称的正则表达式,在Xcode中使用大写字母

Regex 用于名称的正则表达式,在Xcode中使用大写字母,regex,xcode,Regex,Xcode,我正在尝试更改所有类似以下内容的名称:thisExample,并在带有正则表达式的Xcode中使用:this\u for\u example。有人知道怎么做吗 我试过:([a-z][a-z])*[a-z]? 但是它什么也找不到。你只需要找到[a-z][a-z][a-z] 但是,自动替换过程将是一个棘手的问题-您打算如何将任意大写字母更改为小写字母?您只需要找到[a-z][a-z][a-z] 但是,自动替换过程将是一个棘手的问题-您打算如何将任意大写字母更改为小写字母?类似于([a-zA-Z][a

我正在尝试更改所有类似以下内容的名称:
thisExample
,并在带有正则表达式的Xcode中使用:
this\u for\u example
。有人知道怎么做吗

我试过:
([a-z][a-z])*[a-z]?

但是它什么也找不到。

你只需要找到
[a-z][a-z][a-z]


但是,自动替换过程将是一个棘手的问题-您打算如何将任意大写字母更改为小写字母?

您只需要找到
[a-z][a-z][a-z]

但是,自动替换过程将是一个棘手的问题-您打算如何将任意大写字母更改为小写字母?

类似于
([a-zA-Z][a-Z]+)+

这个过程可能是这样的: 您将所有的名称添加到一个文件中,在那里您可以自动伪造替换项,并(自动)生成sed脚本以相互更改。

类似于
([a-zA-Z][a-Z]+)+

这个过程可能是这样的:
您将所有名称添加到一个文件中,然后自动伪造替换,并(自动)生成sed脚本以进行相互更改。

Perl将是一个很好的工具(如果您坚持使用Regex),因为它支持替换模式中的大小写修改:

  • \l
    =>将第一个字符(以下匹配变量的)更改为小写
  • \L
    =>将所有字符(以下匹配变量的)更改为小写
  • \u
    =>将单个字符(以下匹配变量的)更改为大写
  • \U
    =>将所有字符(以下匹配变量的)更改为大写
如果您所关心的只是将(简单/琐碎的!)变量和方法名称转换为
例如,此示例
此示例

对于这一点,像这样的单个正则表达式就足够了:

echo 'thisForExample = orThisForExample();' \
| perl -pe 's/(?<=[^A-Z])([A-Z]+)(?=[^A-Z])/_\L\1/g;'
//output: "this_for_example = or_this_for_example();"
…你有麻烦了深麻烦

让我们看看我们的表达式如何处理它:

echo 'fooURL = URLString + URL + someURLFunction();' \
| perl -pe 's/(?<=[^A-Z])([A-Z]+)(?=[^A-Z])/_\L\1/g;'
//output: "foo_url = _urlstring + _url + some_urlfunction();"
echo'fooURL=URLString+URL+someURLFunction();'\

|perl-pe的/(?perl将是一个很好的工具(如果您坚持使用Regex),因为它支持替换模式中的大小写修改

  • \l
    =>将第一个字符(以下匹配变量的)更改为小写
  • \L
    =>将所有字符(以下匹配变量的)更改为小写
  • \u
    =>将单个字符(以下匹配变量的)更改为大写
  • \U
    =>将所有字符(以下匹配变量的)更改为大写
如果您所关心的只是将(简单/琐碎的!)变量和方法名称转换为
例如,此示例
此示例

对于这一点,像这样的单个正则表达式就足够了:

echo 'thisForExample = orThisForExample();' \
| perl -pe 's/(?<=[^A-Z])([A-Z]+)(?=[^A-Z])/_\L\1/g;'
//output: "this_for_example = or_this_for_example();"
…你有麻烦了。麻烦大了

让我们看看我们的表达式如何处理它:

echo 'fooURL = URLString + URL + someURLFunction();' \
| perl -pe 's/(?<=[^A-Z])([A-Z]+)(?=[^A-Z])/_\L\1/g;'
//output: "foo_url = _urlstring + _url + some_urlfunction();"
echo'fooURL=URLString+URL+someURLFunction();'\

|perl-pe的/(?还有:为什么要破坏现有的命名约定?我还没有想到这点:)因为我要将两个项目添加到一起,并且我想使用相同的名称约定。您可能需要编写某种脚本来完成这项工作,例如使用perl。@MeMi/PaulR:您会在我的回答中找到一个perl shell命令(为了方便起见,使用大小写修饰符)以及我为什么不使用正则表达式。还有@Memi:如果你要在_score和camelCased(据说是ObjC)代码下进行合并,那么到底是什么让你在_score下进行合并呢?不管怎样,我的回答还提到了一个under_score->camelCase regex shell命令。(imho,单独使用regex是一个错误的工具,因此使用风险自负)另外:为什么要破坏现有的命名约定?我还没有想到这一点:)因为我要同时添加两个项目,并且我想使用相同的名称约定,所以您可能需要编写某种脚本来完成此操作,例如使用Perl。@MeMi/PaulR:您会在我的回答中找到一个Perl shell命令(为了方便起见,使用大小写修饰符)还有为什么我不使用正则表达式。还有@Memi:如果你要在_分数和camelCase(据说是ObjC)代码下进行合并,那么到底是什么让你在_分数下进行合并呢?不管怎样,我的回答还提到了一个under_分数->camelCase regex shell命令。(请自行承担风险,因为单独使用正则表达式是错误的工具,imho)当你必须处理像someURL、URLString、someURLString这样相当常见的名称时,这种方法很快就会失败。请参阅我的答案,了解为什么regex在这方面是一个错误的锤子。(以及针对你的特殊和简单情况的改进的通用PCRE regex)当你必须处理像someURL、URLString、someURLString这样相当常见的名称时,这种方法很快就会失败。请参阅我的答案,了解为什么regex在这方面是一个错误的锤子。(以及针对你的特殊和简单情况的改进的通用PCRE regex)