亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

地址模式中的正則表達式

地址模式中的正則表達式

守著星空守著你 2024-01-18 09:56:28
\(Uni(t|ts)|Sho(p|ps)|Offic(e|es)|Fla(t|ts)?|Rm|Roo(m|ms)|Suit(e|es)).\w+(-|&)?\w*\gi我正在使用上面的模式來查找匹配項,但有 2 種情況正則表達式未找到,如何在編輯正則表達式時找到“Rm.2301”和“Flat/Room 5”?在線編輯器中的用例 https://regex101.com/r/Sc1Feg/4unmatched casesRm. 2301, Blk. B3-B4, Flat/Room 5, 9/F, matched casesrm A, 17/F., Flat F, 9/F, Flat G1, 10/F, Flat C, 36/F, Block 1, Flat 1107&1108, 11/F, Flat 2301, 23/F, FUnit 3, 2/F, LUnit 1603 16/F Offices D-F, 23/F, Office D-F, 23/F, Unit 1901, 19/F, Units A, 6/F, Shop 14, G/F, Rooms 2202, Suite 702, 7/F.,
查看完整描述

4 回答

?
吃雞游戲

TA貢獻1829條經驗 獲得超7個贊

關于圖案

  • 該部分Rm. 2301, Blk. B3-B4,不匹配,因為您嘗試的模式的最后部分有.\w+

    模式Rm在交替中匹配,.模式中的 也可以匹配字符串中的點,但后面有一個空格Rm. ,后面的 不會匹配\w。

  • 在這部分中,Flat/Room 5由于相同的機制,空格和 5 不匹配。

    Flat在交替中匹配,.模式中的 匹配/\w+匹配Room,但是(-|&)?\w*模式中的這部分與其后面的空格不匹配。


由于所有示例字符串都匹配到逗號之前,因此一種選擇是匹配除逗號之外的所有后續字符串。

這是一個更廣泛的匹配,但它可能會阻止創建更復雜的模式來解釋所有變化。

\b(?:Units?|Shops?|Offices?|Flats?|Rm|Rooms?|Suites?)[^,\r\n]+

正則表達式演示

請注意,您可以將這樣的部分更改(p|ps)為匹配 ap后跟一個可選s并刪除該組。


查看完整回答
反對 回復 2024-01-18
?
元芳怎么了

TA貢獻1798條經驗 獲得超7個贊

...更通用但仍然足夠具體的東西怎么樣,例如...?/^[\w./]+\s+[\w&-]+/..?

畢竟有通用模式,兩個空格分隔的字符序列,可以按如下方式匹配......

  • ^[\w./]+\s+...從一開始就匹配至少一個單詞、斜杠字符的任何內容,直到到達包含空格(序列)?...

  • [\w&-]+...然后匹配對任何至少是單詞、與減號字符的內容進行連續匹配。

console.log(

`Rm. 2301, Blk. B3-B4,?

Flat/Room 5, 9/F,?

rm A, 17/F.,?

Flat F, 9/F,?

Flat G1, 10/F,?

Flat C, 36/F, Block 1,?

Flat 1107&1108, 11/F,?

Flat 2301, 23/F, F

Unit 3, 2/F, L

Unit 1603 16/F?

Offices D-F, 23/F,?

Office D-F, 23/F,?

Unit 1901, 19/F,?

Units A, 6/F,?

Shop 14, G/F,?

Rooms 2202,?

Suite 702, 7/F.,`.match(/^[\w./]+\s+[\w&-]+/gm));

.as-console-wrapper { min-height: 100%!important; top: 0; }


查看完整回答
反對 回復 2024-01-18
?
慕妹3146593

TA貢獻1820條經驗 獲得超9個贊

由于Rm. 2301包含句點和空格,因此正則表達式的這部分將不匹配:

.\w

要修復此問題,您可以使用加號運算符 ( +),使其匹配句點和空格。為了防止將捕獲擴展到行尾,您還可以使用惰性運算符 ( ?)。

.+?\w

所以最終的正則表達式將是:

/(Uni(t|ts)|Sho(p|ps)|Offic(e|es)|Fla(t|ts)?|Rm|Roo(m|ms)|Suit(e|es)).+?\w+(-|&)?\w*/



查看完整回答
反對 回復 2024-01-18
?
繁星點點滴滴

TA貢獻1803條經驗 獲得超3個贊

也許更具可讀性的正則表達式是這樣的:

/(Flat\/Room|Flat|Suite|Rooms|Rm\.|Rm|Shop|Units|Unit|Offices|Office) ([\w&-]+)/gmi

它捕獲第 1 組內的房間類型以及第 2 組中它旁邊的數字(以及逗號之前)。

解釋:

  • (A|B|C):將在組 1 中捕獲AB或者C。

  • ([\w&-]+):將在組 2 中捕獲字母數字 或&-,任意次數。

演示: https: //regex101.com/r/Sc1Feg/5


查看完整回答
反對 回復 2024-01-18
  • 4 回答
  • 0 關注
  • 205 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號