gpt4 book ai didi

php - 正则表达式选择的比我想要的多(PHP)

转载 作者:行者123 更新时间:2023-12-04 06:41:51 24 4
gpt4 key购买 nike

我有以下字符串:

blah blah yo<desc>some text with description - unwanted 
text</desc>um hey now some words yah<desc>some other description text
stuff - more unwanted here</desc>random word and ; things. Now a hyphen
outside of desc tag - with other text<desc>yet another description - unwanted
<desc>and that's about it.

(注意:实际上字符串中没有换行符/回车符。我只是为了可读性在这里添加它们。)

我只想从连字符开始选择 desc 标签中的文本,还包括前面的空格,还包括结尾的 desc 标签。这很简单,因为我刚刚这样做了:

\s-.*?<\/desc>

现在,问题是 desc 标签之外的连字符也被选中了。所以我所有的选择如下:
- unwanted text</desc>
- more unwanted here</desc>
- with other text<desc>yet another description - unwanted</desc>

所以前两个是完美的,但看看最后一行是如何因为 - 在 desc 标签之外而搞砸的?

仅供引用,如果有兴趣,在我的代码中,我正在做这样的替换:
$text = preg_replace('/\s-.*?<\/desc>/', '</desc>', $text);

我尝试做一些 Lookbehind 的东西,但无法让它工作。

有任何想法吗?

谢谢!
标记

最佳答案

你可以试试 [^-<>]*而不是 .*? .这限制了正则表达式可以选择的内容,并有效地将尖括号和连字符视为标记。

关于php - 正则表达式选择的比我想要的多(PHP),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4147077/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com