iT邦幫忙

0

C# 正規運算式問題請教

c#
  • 分享至 

  • xImage

最近在練習正規運算式

我有看到一段程式碼可是我有點看不懂

var text = @"<[^>]*(>|$)";

雖然這段有註解說是找尋含有"<"跟">"之間的字串
可是我不太懂為什麼是這樣寫

我有看一下官網或是其他相關文章,可是還是看不太懂
能否為我說明一下呢?謝謝

ccutmis iT邦高手 2 級 ‧ 2023-03-08 17:14:34 檢舉
< 匹配 <
[^>]* 匹配不等於 > 的所有字元
(>|$) 匹配 > 或 行尾

你用 vs code 開一個新文件 輸入
<a href="abc.htm" target="_blank">dffdsdafsadf</a>
<b sfsdfasdf

再按Ctrl+F 尋找 "<[^>]*(>|$) ",啟用 RegEXP 然後看哪些是被找到的,就知道它在做什麼,我自學的經驗是這個過程很像小孩學說話,只要發音正確多說幾遍你就會講了。

-----

如果只是要匹配 < 到 > 中間不定長度的字串的話 寫 <[^>]*> 就可以了
最後面的(>|$) 是RegEXP裡面常用的 OR 用法,要用一個小括號把OR的元素包含進去,再用 | 分隔,翻作白話就是 匹配 > 或 行尾($)
所以你會發現 "<b sfsdfasdf" 也是匹配的
tenno081 iT邦研究生 4 級 ‧ 2023-03-09 09:43:32 檢舉
原來是這樣 我懂了 謝謝
ccutmis iT邦高手 2 級 ‧ 2023-03-09 15:35:23 檢舉
懂了就好 祝您學習順利...
曾有一位大佬說過他認為學任何程式之前都應該先學 RegEXP
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

0
hkbrian
iT邦見習生 ‧ 2023-03-08 17:15:30
最佳解答

<:匹配第一個<字符
[^>]:匹配非>的字符(: 匹配零個或多個, [^XYZ] 匹配非X/Y/Z)
(>|$):匹配一個>括號或行尾(\n / \r)符號
因此,這個正則表達式可以匹配以下內容:

我要發表回答

立即登入回答