作者 主題: 為什麼在正規表示是中 /^yes$/ 只有 yes符合?  (閱讀 4079 次)

0 會員 與 1 訪客 正在閱讀本文。

iopklmm

  • 懷疑的國中生
  • **
  • 文章數: 71
    • 檢視個人資料

請教各位

/^yes/ 不是代表 yes開頭的都算嗎? 所以只要是 yesXXXXXXXX ...都符合 而
/yes$/ 不是代表 結尾是yes的都算 所以只要是 ...XXXXXXXXXyes 都符合



/^yes$/ 不是應該是 yesXXXXX...XXXyes都符合
為何書上寫說只有 yes這種字串才符合?

Yamaka

  • 俺是博士!
  • *****
  • 文章數: 4913
    • 檢視個人資料
    • http://www.ecmagic.com
Re: 為什麼在正規表示是中 /^yes$/ 只有 yes符合?
« 回覆 #1 於: 2013-06-13 11:20 »

請教各位

/^yes/ 不是代表 yes開頭的都算嗎? 所以只要是 yesXXXXXXXX ...都符合 而
/yes$/ 不是代表 結尾是yes的都算 所以只要是 ...XXXXXXXXXyes 都符合



/^yes$/ 不是應該是 yesXXXXX...XXXyes都符合
為何書上寫說只有 yes這種字串才符合?

書上說的沒錯呀,因為並不是『or』的組合
要指定開頭『或』尾端,要用『or』的組合

iopklmm

  • 懷疑的國中生
  • **
  • 文章數: 71
    • 檢視個人資料
Re: 為什麼在正規表示是中 /^yes$/ 只有 yes符合?
« 回覆 #2 於: 2013-06-13 11:44 »

/^yes$/ 不是應該是 yesXXXXX...XXXyes都符合
為何書上寫說只有 yes這種字串才符合?

可是 yesXXXXXXXX.......XXXXXXXyes 也算是AND不是嗎? 開頭是 yes and 結尾是 yes
如果是 or 的話 不是應該才是 yesXXXXXXXX...... 或者 .....XXXXXXXyes 都符合

hikohan

  • 俺是博士!
  • *****
  • 文章數: 1288
    • 檢視個人資料
Re: 為什麼在正規表示是中 /^yes$/ 只有 yes符合?
« 回覆 #3 於: 2013-06-13 11:50 »
regEx的or要另外寫。

你的條件

['y'開頭接著 'e' 接著 's',然而 's' 同為字串結尾。]

win32 有 regEx 練習器 Expresso.
lifeIsFunWithPHP.

Yamaka

  • 俺是博士!
  • *****
  • 文章數: 4913
    • 檢視個人資料
    • http://www.ecmagic.com
Re: 為什麼在正規表示是中 /^yes$/ 只有 yes符合?
« 回覆 #4 於: 2013-06-13 14:05 »

/^yes$/ 不是應該是 yesXXXXX...XXXyes都符合
為何書上寫說只有 yes這種字串才符合?

可是 yesXXXXXXXX.......XXXXXXXyes 也算是AND不是嗎? 開頭是 yes and 結尾是 yes
如果是 or 的話 不是應該才是 yesXXXXXXXX...... 或者 .....XXXXXXXyes 都符合

不要用自己口語上的用語來寫程式碼,除非你真的已經很了解這個程式碼的語法

樓主的需求,用口語來說應該是『我要 yes 出現在開頭,「或是」yes 出現在尾端』

/^yes$/ 轉換為口語是『當 yes 出現在開頭「and」尾端』,再明白一點說
就是要 yes 既是 開頭也是結尾,中間不能有其他任何字元

現在規則就是這樣,要用它就按照它的規則來寫
不要說『也算』什麼的,畢竟現在 regex 還沒支援『自然用語』

寫程式碼是要程式員明白告訴電腦要做什麼
不能讓電腦來猜想你要她做什麼  :D

netman

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 17463
    • 檢視個人資料
    • http://www.study-area.org
Re: 為什麼在正規表示是中 /^yes$/ 只有 yes符合?
« 回覆 #5 於: 2013-06-13 15:36 »
沒那麼複雜啊〜〜

句首接yes跟著是句尾

清楚?

iopklmm

  • 懷疑的國中生
  • **
  • 文章數: 71
    • 檢視個人資料
Re: 為什麼在正規表示是中 /^yes$/ 只有 yes符合?
« 回覆 #6 於: 2013-06-13 19:15 »
我最後終於懂了

很蝦 我知道 ==

davidju

  • 懷疑的國中生
  • **
  • 文章數: 33
    • 檢視個人資料
Re: 為什麼在正規表示是中 /^yes$/ 只有 yes符合?
« 回覆 #7 於: 2013-06-14 09:36 »
如果要match yesXXXXX...XXXyes 可能要寫成這樣喔

/^(yes).*(yes)$/

 8) 8) 8)

casa

  • 懷疑的國中生
  • **
  • 文章數: 41
    • 檢視個人資料
Re: 為什麼在正規表示是中 /^yes$/ 只有 yes符合?
« 回覆 #8 於: 2013-07-11 16:26 »
沒那麼複雜啊〜〜

句首接yes跟著是句尾

清楚?
對呀...
^ 指一行的開始
$ 指一行的結束
^yes$ 就代表,你只找 yes 而已

ericchung

  • 可愛的小學生
  • *
  • 文章數: 23
    • 檢視個人資料
Re: 為什麼在正規表示是中 /^yes$/ 只有 yes符合?
« 回覆 #9 於: 2013-07-15 15:32 »
/^yes$/  : 假如一行以行首開始緊接著yes,接著緊接著行尾就匹配。