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

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

正則表達式:將部分字符串匹配到字符,除非遇到另一個

正則表達式:將部分字符串匹配到字符,除非遇到另一個

紅顏莎娜 2023-03-08 15:20:19
我發現了多篇帶有負面前瞻性的帖子,但我似乎無法讓它適用于這個特定的用例。我有多行具有以下 4 種模式之一(可能超過 2 個選項):text [option1/option2] text text] [option1/option2] more text text [option1/option2] [text text] [option1/option2] [text尋找一個正則表達式(更可能是多個:一個用于左側,一個用于右側),它只匹配單括號文本(下面以粗體顯示):文本 [選項 1/選項 2] 文本文本] [option1/option2] 更多文本文本 [選項 1/選項 2] [文本文本] [選項1/選項2] [文本多次通過線路是可以的。另外,這是 Python,所以如果有完全不同的方法,我愿意接受建議。這只是列表中的字符串。提前致謝-mS
查看完整描述

3 回答

?
慕運維8079593

TA貢獻1876條經驗 獲得超5個贊

嘗試這個:(^\w+\])|(\[\w+$)

(^\w+\])-在一行的開頭匹配\w一次且無限次,然后是.^\]

| - 或者

(\[\w+$)- 匹配\w一次和無限次前面的\[行尾$

演示


查看完整回答
反對 回復 2023-03-08
?
慕尼黑5688855

TA貢獻1848條經驗 獲得超2個贊

看起來你正在嘗試匹配這個。

不過,環視斷言需要什么?


(text\] (?:\[option1/option2\])(?: \[text)?|(?:\[option1/option2\]) \[text)


=


 (

      text \] [ ]

      (?: \[ option1/option2 \] )

      (?: [ ] \[ text )?

   |  (?: \[ option1/option2 \] )

      [ ] \[ text

 )

見 https://regex101.com/r/HxY4Uv/1


您可以將捕獲組包裝在 3 種形式周圍以查看哪些匹配,

這樣您就不必發布處理字符串。


(text\]) (?:\[option1/option2\]) (\[text)?|(?:\[option1/option2\]) (\[text)


見https://regex101.com/r/CqzZID/1


查看完整回答
反對 回復 2023-03-08
?
暮色呼如

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

以下正則表達式將根據需要匹配您的行:

(^[^\[\]]*?\])|(\[(?!.*?\]).*)

正則表達式演示

(^[^\[\]]*?\])|(\[[^\[\]]*$)必須為不使用前瞻性和更簡單的工作而工作。您可以將正則表達式拆分為(^[^\[\]]*?\])(\[[^\[\]]*$),然后將每個與行匹配以使用匹配組。


查看完整回答
反對 回復 2023-03-08
  • 3 回答
  • 0 關注
  • 158 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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