簡體   English   中英

匹配一些沒有跟隨和前面的東西

[英]match something not followed AND preceded by something

我想匹配每個“e”字符,它不是科學 e 符號(例如 3e+6)的一部分,用括號括起來。 我可以毫無問題地做相反的事情: /(?<=\\(\\d)e(?=[+-]\\d+\\)/)
問題是,如果我嘗試這樣做( /(?<!\\(\\d+)e(?![+-]\\d+\\))/ ),一旦第一部分或最后一部分不匹配,它就不會匹配匹配(不是和)。

簡而言之,它應該與 e 匹配:

23e+4
4e
e
e+5)
(4e

但不在:

(23e+5)

(或匹配任何與此/\\(\\d+e[+-]\\d+\\)/匹配的/\\(\\d+e[+-]\\d+\\)/

先感謝您 :)

由於您的原始模式是

\(\d+e[+-]\d+\)

要反轉這種邏輯,您可以交替使用:

  • \\(\\d+負向后視,然后是e的匹配,以及
  • 匹配e ,然后是[+-]\\d+\\)的負前瞻:
(?<!\(\d+)e|e(?![+-]\d+\))

https://regexr.com/4v3sg

非正則表達式解決方案可以是這樣的

  1. 檢查字符串是否以()開頭,然后返回 false
  2. 如果沒有,則檢查它是否有e或相應地返回布爾值

 let arr = [`23e+4`,`4e`,`e`,`e+5)`,`(4e`,`(23e+5)`] let checker = v => v.startsWith('(') && v.endsWith(')') ? 'false' : v.includes('e') arr.forEach(v => console.log(checker(v)))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM