[英]How to modify a word in a sentence using regex to find the word in php
我有一個句子,其中包含以 $ 開頭和結尾的單詞/方程式。 例如,
"The $girl$ is a $good$ person"
我想將句子修改為
"The $$girl$$ is a $$good$$ person".
我找到了一種查找單詞的方法,但問題是如何用修改后的版本替換它們。 我在這個平台上找到了這個,但它沒有回答這個問題。
preg_replace('/\$\S+\$/', '', $text)
任何幫助將不勝感激。 謝謝
您可以使用
$text = 'The $girl$ is a $good$ person';
echo preg_replace('/\$[^\s$]+\$/', '\$$0\$', $text);
// => The $$girl$$ is a $$good$$ person
\$
- 一個$
文字字符[^\s$]+
- 除了$
和空格之外的任何一個或多個字符\$
- $
文字字符。 \$$0\$
替換意味着整個匹配被替換為自身( $0
)並在兩端添加兩個$
。
為避免重新包裝$$...$$
子字符串,您可以使用
$text = 'The $girl$ is a $good$ person, and keep $$this$$.';
echo preg_replace('/\${2,}[^\s$]+\${2,}(*SKIP)(*FAIL)|\$[^\s$]+\$/', '\$$0\$', $text);
// => The $$girl$$ is a $$good$$ person, and keep $$this$$.
請參閱此 PHP 演示。 \${2,}[^\s$]+\${2,}(*SKIP)(*FAIL)|
part 匹配所有不包含$
和兩個或多個$
字符之間的空格的子字符串並跳過它們。
請參閱正則表達式演示。
您可以在模式周圍聲明空白邊界,並在美元符號周圍使用$0
來使用完全匹配。
請注意, \S
也可以匹配$
,因此您可以使用否定字符 class [^$]
匹配除$
之外的任何字符
(?<!\S)\$[^$]+\$(?!\S)
(?<!\S)
向左斷言空白邊界\$
匹配$
[^$]+
匹配 1+ 個除$
之外的任何字符\$
匹配$
(?!\S)
斷言右邊的空白邊界$text = '"The $girl$ is a $good$ person"';
echo preg_replace('/(?<!\S)\$[^$]+\$(?!\S)/', '$$0$', $text);
Output
The $$girl$$ is a $$good$$ person
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.