[英]replacement using regex expression in javascript
我在Java中有一個HTML字符串,其中的某些屬性中包含數據
一個例子是
<img class="show-grid" src="http://localhost:4502/content/dam/original" alt="4.7-products.jpg">
現在,我遇到的問題是我想在src屬性(以http開頭並以此處以original開頭的字符串)內的字符串末尾添加一些字符串。
我唯一知道的是:
http
開頭。 我不知道的事
我嘗試了以下正則表達式:
target.search(/(\bhttp.*\"\b)/gi)
這個想法是找到所有字符串:
http
開頭,以"
結尾。 因此,我認為此正則表達式將為我提供以下字符串:
http://localhost:4502/content/dam/original"
但是相反,它給了我:
http://localhost:4502/content/dam/original" alt="
知道為什么它超出了當前單詞,是不是因為它在單詞之間尋找空格,然后當它在空格分開的新單詞中找到"
時"
就停止了在此處的搜索。
如何修改target.search(/(\\bhttp.*\\"\\b)/gi)
以獲得所需的結果?
只需拆分即可,並以積極的眼神重新添加所需的角色
String string = "http://yourtestinthstsdfasdfasdfhttp://moreteststrings";
String[] parts = string.split("(?=http)");
String part1 = parts[0]; // is http://yourtestinthstsdfasdfasdf
String part2 = parts[1]; // is http://moreteststrings
您的正則表達式是“貪婪的”(請參閱: https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/RegExp https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/RegExp )。 要對其進行更改, /(\\bhttp.*\\"\\b)/
/(\\bhttp.*?\\"\\b)/
修改為/(\\bhttp.*?\\"\\b)/
。
編輯:這仍然行不通,請參閱下面的消息
該正則表達式使用默認的貪婪修飾符。 這意味着它將搜索盡可能多的 *
(任何字符)。 相反,您要查找的是*?
(零個或多個,非貪婪的)修飾符,可更改此行為。
您的新正則表達式搜索如下所示:
target.search(/http.*?\"/gi)
/http.*(?=\\"\\s)/gi
將匹配從http到結束引號的所有內容,后跟一個空格,它使用(?=),稱為正向超前。
如果您只想匹配src屬性中的任何內容而無需推測是否存在http字符串,則采用另一種方法: src="([^"]*)
。
您可以使用它https://regex101.com/r/rH0yZ2/3 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.