簡體   English   中英

正則表達式:替換兩個字符之間的字符

[英]Regex: Replace Characters In-between Two Characters

我在使用 Regex 替換帶有? 在兩個字符之間。 我希望 Regex 匹配的兩個示例是:

• Replace thi?s question mark but not this one?
• ? Replace the lonely question mark

什么是最好的方法:

a) 匹配一個被其他字符包圍的字符

b) 匹配一個單獨的字符並且在它之前或之后沒有任何字符

我正在使用 PHP preg_match 和 MySQL REGEXP 來執行這些模式匹配。 對於 MySQL 我試過:

SELECT description
FROM locations
WHERE description
REGEXP '/|([^?]+)\/'

對於 PHP 我試過:

preg_match('/|([^?]+)\/', $string);

檢查此演示代碼 Viper

圖案

/(\w+)?(\w+)/g

測試這個模式


PHP

<?php
    echo preg_replace("/(\w+)?(\w+)/i", "thi?s", "?");
?>

結果

?

希望這對你有幫助!

我為 PHP 推薦這個:

(?<!\w(?=\? ))\?(?!\s*$)\s*

(?!\\s*$)是一個負面的前瞻,可以防止? 從匹配是否在句子的末尾(我添加了空格以防萬一)。

(?<!\\w(?=\\? ))有點復雜。 如果? 前面是一個\\w字符(通常讀作[a-zA-Z0-9_] ),然后是一個空格。

regex101 演示

我不知道mysql是否支持lookbehinds。


|([^?]+)\

這是您當前的正則表達式,我認為您的 PHP 代碼無法運行。 最后的\\沒有轉義任何東西(實際上,它試圖轉義分隔符)所以... :s

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM