正则表达式搜索路径

时间:2016-05-18 17:47:19

标签: regex search replace

全部 -

首先,请允许我向任何可以(并且确实)提供帮助解决此问题的人表示感谢....谢谢!

我有几个文件夹深的样式表路径,我想将我找到的任何文件夹更改为单个css文件夹。

<link rel="stylesheet" href="../includes/style/main.css" type="text/css" media="all" />
<link rel="stylesheet" href="/templates/includes/style/main.css" type="text/css" />
<link rel="stylesheet" href="../../includes/user/style/user.css" type="text/css" />
<link rel="stylesheet" href="includes/admin/css/style/admin.css" type="text/css" />

正如您所看到的那样,用户| admin | main.css的路径到处都是,我正在尝试引用一个中心位置。

我想找到并替换要读取的路径信息 href =“/ css / [文件名] .css”

这是我到目前为止所做的,但我无法弄清楚如何让它在文件名之前转到最后的斜杠

^<link rel="stylesheet" href=".*?(.*?[\/])

再次,任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

您可以通过多种方式定位所需内容,具体取决于您希望如何执行替换(以及您可以随意使用的正则表达式),它们可能会有所不同。

我将提供一些可能有用的不同用途。

匹配href属性

如果您想用不同的值替换整个href部分,可以使用以下表达式:

href=(["'].+\.css["'])

这将使用您的示例输入匹配任何href属性中的所有内容,如下所示:

enter image description here

<link>代码与<href> 匹配

如果您想明确表示您只想对<link>代码执行此操作,则可以附加之前的<link ...内容:

<link rel=['"]stylesheet['"] href=(['"].+\.css['"])

看起来像:

enter image description here

<link>标记与CSS文件匹配

最后,如果您只想匹配路径,但不包括CSS文件,则可以使用以下内容:

<link rel=['"]stylesheet['"] href=['"].+(?=\/.+\.css['"])

看起来像:

enter image description here

只需抓取href直到CSS文件

href=['"].+(?=\/.+\.css['"])

enter image description here

答案 1 :(得分:0)

您可以使用此正则表达式:

href="[^"]+(\/[^.]+\.[^"]+)"

/filename.css将在$1

它不是超级优化的,因为它需要稍微回溯一下。 (href="[^"]+最初将吞噬整个路径。)

或者,您可以使用此正则表达式:

href="[^"]+(\/[^"\/]+)"

他们都对测试数据给出了相同的结果。

为了帮助您,更换应该是href="YOUR_PATH$1"。您的路径可能需要先转义。