2

在 PHPStorm 中,我需要查找/替换一些用于 CSS 类名和 DOM id 的混合大小写字符串。我无法更改属性,onClick并且图像名称需要保留。这是我所拥有的:

<div class="ThumbContainer" id="Source-Data4-Thumb">
<div class="ThumbTitleArea">
    <div class="DataTitleDiv"> GYR Performance <img src="images/someImage.png" onClick="someFunc()" /></div>
</div>
    <div class="dataDetailArea">
    <div class="DataThumbArea"> Data Source:Client<br>
                    Last refreshed:12/05/2013 <br>
                    Records:206<br>
        <br>
                        Used for the following reports<br>
                -    GYR Performance<br>
        </div>
</div>
</div>

这是我需要的:

<div class="thumb_container" id="source_data4_thumb">
<div class="thumb_title_area">
    <div class="data_title_div"> GYR Performance <img src="images/someImage.png" onClick="someFunc()" /></div>
</div>
    <div class="data_detail_area">
    <div class="data_thumb_area"> Data Source:Client<br>
                      Last refreshed:12/05/2013 <br>
                      Records:206<br>
        <br>
                          Used for the following reports<br>
                 -    GYR Performance<br>
        </div>
</div>
</div>

注意dataDetailArea以小写字母开头.. bleh。这将是一次查找/替换,因此不需要在 PHPStorm 中。它甚至可以在任何在线工具中,例如http://gskinner.com/RegExr/

我需要查找/替换的实际主干模板大约有 3100 行代码,否则我会在这里为您提供。

这是我到目前为止所拥有的。它似乎不匹配匹配Camel-Case3-Foo

(class|id|data-[?!=])="\b([A-Za-z][a-z-]*){2,}\b"
4

2 回答 2

2

这个正则表达式应该找到应该放置下划线的位置:

((?<=\w)(?=[A-Z])|-)

用它来替换以插入下划线,然后将字符串转换为小写似乎是有意义的。

于 2013-02-07T18:13:00.463 回答
0

我会搜索这样的东西:

"[a-z0-9_]*\([A-Z]\)

引号,后面带有小写、数字或下划线字符。后面的任何东西都有一个大写字母。制作大写字母子表达式 1。

将子表达式 1 替换为下划线 + tolower() 函数的结果。

您需要对每一行多次应用这个,因为它每次只能找到一个大写字母。

于 2013-02-07T17:34:08.187 回答