[求助] 关于elisp正则的精确不匹配

关于elisp正则一直有个疑问,如何精确的不匹配特定内容。

  1. test unmatched string
  2. {[test unmatched string]}
  3. {test unmatched string}
  4. [test unmatched string]

例如我想匹配 “test unmatched string” 这个字符串,但是不包含2的情形,即前后有 “{[” 和 “]}” ,除了2以外其他任何情形都可以匹配,比如 3,4 等。请问大佬们这样的 elisp 正则该如何写?

尝试过 用 “[^ ]” 这种反选,但是它只能匹配单个字符,无法匹配连在一起的字符串。貌似正则表达式的设计都是以单个字符为基准的,不知道字符串的不匹配如何表达。

正则应该写不出来,看来只能手动回溯了。

try this one:

正则有零宽断言

1赞

如果字符串不是从第一个字符开始匹配就不行了吧?不知道楼主的本意是不是这个

不知道 elisp 是如何,一般的正则有 zero-width negative lookbehind (?<!X) 和 zero-width negative lookahead (?!X),可以用来判断前后是否符合。

1赞

谢谢,我想要的应该不是这个。上面的例子只是我随便列的,我想匹配的是 test unmatched string 前后不是 {[]} 的所有情形。零宽断言应该是正解。

是该用 零宽断言,但是elisp正则不支持这个。