繁体   English   中英

正则表达式,用于识别文档中所有驼峰式的字符串

[英]Regular Expression to identify all camel cased strings in a document

我对正则表达式不满意,需要一些帮助。 继承的js代码库将驼峰式大小写和蛇形大写字母混合使用来处理变量名和对象属性。

我正在尝试制定一个我可以使用的正则表达式,该表达式将识别所有驼峰式的字符串,然后将这些字符串替换为蛇形框。 我正在努力的部分是在我有条件的情况下识别骆驼装弦。

识别哪些字符串是驼峰大小写:在本文档中,所有驼峰大小写的字符串都以小写字母,下划线或$开头,然后在该字符串的稍后位置使用大写字母。 例如: someCamelCasedString_someCamelCasedString$someCamelCasedString 正则表达式需要考虑到我要匹配的某些字符串可能是对象属性,因此它应该能够识别以下内容: Foo._someCamelCasedString.barFoo[_someCamelCasedString].bar

这将标识所有出现的“严格”骆驼大小写(仅字母)。 它们以_$开头还是foofoo都无关紧要。

[a-z]+[A-Z][a-zA-Z]*

cameL情况是骆驼吗? 我以为是,但是我们可以改变它。

观看演示

如果要允许字符串中的其他字符(数字等),则可以将其添加到字符类中。 因此,这是根据您的要求进行改进的起点。

例如,如果您知道自己对数字和下划线感到满意,则可以这样做:

[a-z]\w*?[A-Z]\w*

如果您还想在名称中使用美元(@Jongware表示js字符串允许使用的字符),则可以这样做:

[a-z][\w$]*[A-Z][\w$]*

接下来是一个问题,即有效字符串的边界是什么构成的,以便我们也许可以设计一些锚点(也许偷偷摸摸的先行,因为js不支持向后看)以避免误报。

也许是这样的:

/(\w|\$)+([A-Z])\w+/gm

您可以在此处试用它并查看示例: http : //regexr.com/38qkq该网站还解释了每段在正则表达式中的含义。

/(?:^|\s|[^\w$])([a-z_$][a-zA-Z]*[A-Z][a-zA-Z]*)/gm

测试http://regex101.com/r/pH1aB7

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM