給出以下示例字符串:"[ One].[Two ].[ Three ].[Four]"
我想匹配「One」; 「二」,「三」和「四」。正則表達式 - 在字符之間獲取詞
換句話說:我需要得到括號內的單詞,而不管這個單詞有多少空白。
我用下面的表達式試了一下:
(?<=\[)(?s)(.*?)(?=\s*\])
導致" One"
,"Two"
," Three"
和"Four"
。
編輯: 它更有點複雜,比我第一個因子評分這將是:
- 有由支架壓縮了(至少一個)字(S)這可能是由任意分隔字符(例如
"[one]"
或"[one] [two][three].[four]"
)。 - 托架包含一個字和許多,或甚至沒有空格(例如
"[one]"
或"[two ]"
或"[ three ]"
- 字的這些塊並有包圍支架由字符的已知序列包圍:
"These words [word-1] .. [word-n] are well known"
或"These words [word-1] .. [word-n] are well known"
。
請注意:"[word-1] .. [word-n]"
只是代表上述區塊的任意數。
我想匹配正好罪(括號內)和刪除環繞序列("These words"
和"are well known"
)以及括號內和塊之間可能存在的空格。另外,塊之間可能存在的char(它不能超過一個)也應該被刪除。 希望這不是太奇怪了;)
順便說一下''(?s)'設置了點全部標誌,所以'.'與新行相匹配。那是故意的嗎?什麼是'。*?'預計會匹配?使用'\ w'是解決你的問題的一種方法,它適用。 – Kobi 2011-05-24 17:38:03