iT邦幫忙

2023 iThome 鐵人賽

DAY 14
0
影片教學

睡醒來聽 PHP 與 MySQL系列 第 14

[睡醒來聽 PHP 與 MySQL] DAY14 函式(2)規則設定

  • 分享至 

  • xImage
  •  

Yes

Welcome 歡迎來到「睡醒來聽 PHP 與 MySQL」系列!

DAY14 今天要學甚麼?今天進入到函式(2)規則設定

🔶章節:
🔹[開頭] 0:00
🔹[正規表達式介紹] 0:27
🔹[基本結構] 1:25
🔹[程式語言和工具應用] 1:44
🔹[正規表達式-基礎] 3:11
🔹[正規表達式-量詞] 4:00
🔹[正規表達式-比對練習] 5:16
🔹[preg_match()介紹&練習] 6:31
🔹[preg_match_all()介紹&練習] 7:50
🔹[preg_replace()介紹&練習] 9:05
🔹[ppreg_split()介紹&練習] 10:21
🔹[preg_quote()介紹&練習] 11:13
🔹[總結] 13:01

如果影片中不清楚,需要補充的地方我會再添加到這邊~ /images/emoticon/emoticon12.gif


正規表達式-程式語言和工具應用

在許多程式語言和工具中都有廣泛的應用,例如 Python、JavaScript、Java、C#、Perl、grep、sed、aw、SQL 等等。

  1. Python
    Python 使用 re 模組來支援正規表達式。開發者可以使用 re.match(), re.search(), re.findall(), re.sub(), 等函式來進行匹配、搜尋、替換等操作。
  2. JavaScript
    JavaScript 內建支援正規表達式。開發者可以直接使用 RegExp 物件或字面量來建立正規表達式,並使用 test(), exec(), 或 match() 等方法進行匹配。
  3. Java
    Java 使用 java.util.regex 套件提供正規表達式功能。開發者可以使用 Pattern 和 Matcher 類別進行正規表達式的編譯和匹配。
  4. C#
    C# 具有 System.Text.RegularExpressions 命名空間,提供對正規表達式的支援。開發者可以使用 Regex 類別進行正規表達式的操作,例如匹配、替換等。
  5. Perl
    Perl 是一個以正規表達式為基礎的程式語言,內建支援正規表達式,並以正規表達式作為語言的一部分。
  6. grep、sed、awk
    在 Linux/Unix 環境下,grep、sed、awk 等命令行工具廣泛使用正規表達式進行文本搜索、替換、處理等操作。正規表達式在這些工具中非常常見。
  7. SQL
    SQL 中的一些資料庫系統支援正規表達式,例如 PostgreSQL、MySQL 等,可以在 SQL 查詢中使用正規表達式來進行模式匹配。

preg_match()

基本語法


preg_match(pattern, subject, matches)

影片中的練習

$pattern = "/\d{3}-\d{2,4}/";
$string = "Call me at 123-45";
$found = preg_match($pattern, $string);
// $found 將是 1,表示找到了匹配

preg_match_all()

基本語法


preg_match_all(pattern, subject, matches, flags, offset)

影片中的練習

$pattern = "/\d{2}/";
$string = "123 apples and 45 bananas";
$found = preg_match_all($pattern, $string, $matches);
// $matches 將包含所有匹配的數字,如 [0] => ["12", "45"]

preg_replace()

基本語法


preg_replace(pattern, replacement, subject, limit, count)

影片中的練習

$pattern = "/apple/";
$replacement = "banana";
$string = "I have an apple.";
$newString = preg_replace($pattern, $replacement, $string);
// $newString 將是 "I have an banana."

preg_split()

基本語法


preg_split(pattern, subject, limit, flags)

影片中的練習

$pattern = "/[\s,]+/";
$string = "Rina,Brian,Coco";
$array = preg_split($pattern, $string);
// $array 將包含 ["Rina", "Brian", "Coco"]

preg_quote()

基本語法


string preg_quote ( string $str [, string $delimiter = NULL ] )

影片中的練習

$pattern = "/[a-z]+/";
$escaped_pattern = preg_quote($pattern);

echo "原始正則表達式:{$pattern}\n";
echo "轉義後的正則表達式:{$escaped_pattern}\n";

為什麼需要preg_quote()函式?

1. 避免特殊字符造成的錯誤匹配: 正則表達式中有些字符是具有特殊含義的,比如 . (匹配任意字符)、 (匹配零個或多個前一個字符)、+ (匹配一個或多個前一個字符),等等。如果目標字符串中包含這些特殊字符,且我們想要按照字面含義進行匹配,就需要對這些特殊字符進行轉義,避免造成不符合預期的匹配。

2. 增加正則表達式的動態性: 有時候,我們需要動態生成正則表達式,而這些正則表達式可能包含用戶輸入的內容。使用 preg_quote() 函數可以確保用戶輸入的字串在正則表達式中被視為字面含義,而不會被誤解為正則表達式的特殊字符。

假設我們想要從使用者輸入的文字中匹配含有特定關鍵字的句子。使用者可能會輸入含有正則表達式特殊字符的關鍵字,這時我們需要使用 preg_quote() 函數來轉義這些關鍵字,以保證正確匹配。

(以下舉例)

<?php
// 使用者輸入的關鍵字,假設使用者輸入的是 ".*test"
$user_input_keyword = ".*test";

// 將使用者輸入的關鍵字進行轉義
$escaped_keyword = preg_quote($user_input_keyword);

// 原始正則表達式,我們想要匹配以關鍵字開頭的句子
$pattern = "/^{$escaped_keyword}/i";

// 假設目標字符串是 "This is a test sentence."
$target_string = "This is a test sentence.";

// 進行正則表達式匹配
if (preg_match($pattern, $target_string)) {
    echo "目標字符串符合正則表達式。";
} else {
    echo "目標字符串不符合正則表達式。";
}
?>

/*
在這個例子中,假設使用者輸入了 ".*test" 作為關鍵字,
我們使用 preg_quote() 函數將特殊字符 .* 進行了轉義,
得到了 "\\.\\*test"。

這樣我們就可以確保正則表達式按照字面含義進行匹配,
而不會受到 .* 的特殊含義的影響。
*/

感謝觀看!/images/emoticon/emoticon08.gif


上一篇
[睡醒來聽 PHP 與 MySQL] DAY13 函式(1)字串處理
下一篇
[睡醒來聽 PHP 與 MySQL] DAY15 函式(3)數字、陣列處理
系列文
睡醒來聽 PHP 與 MySQL30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言