使用preg_replace,我可以将匹配的子字符串替换为另一个子字符串:
echo preg_replace("yellow", "blue", "sky is yellow");
// print "sky is blue"
但是是否可以将搜索字符串中的子字符串替换为另一个字符串?
例如,我想更改此文本:
<a>foo</a>
<a class="changehere">foo</a>
<a>foo</a>
通过
<a>foo</a>
<a class="changehere">FAA</a>
<a>foo</a>
我尝试过:
echo preg_replace("@<a class="changehere">(foo)</a>@", "FAA", $text);
但是整个生产线更改为FAA ... 我如何才能找到一个取决于其他字符的子字符串,并仅替换该子字符串?
感谢帮助:)! 我希望我很清楚
答案 0 :(得分:0)
假设您不使用正则表达式解析HTML / XML,则可以使用此正则表达式:
import requests
from bs4 import BeautifulSoup
url = 'https://coinmarketcap.com/currencies/electroneum/'
response = requests.get(url)
html = response.content
soup = BeautifulSoup(html, 'html.parser')
soup.select_one('[data-currency-value]').text
详细信息:
php > $text = '<a class="changehere">FAA</a>';
php > echo preg_replace('@<a class="changehere">\Kfoo(?=</a>)@', "FAA", $text);
<a class="changehere">FAA</a>
:重设所有匹配的信息\K
:先行断言我们将(?=</a>)
领先于当前位置