在emacs lisp中,我只知道函数string-match[-p]
,但我不知道将字符串与字符串进行匹配的方法。emacs lisp中的字符串匹配匹配任意字符串
E.g.假设我有一个由某个函数生成的字符串,并且想知道另一个字符串是否包含它。在很多情况下,string-match-p
会正常工作,但是当生成的字符串包含regexp语法时,它将导致意外的行为,甚至可能会在包含的正则表达式语法无效的情况下崩溃(例如,不平衡的带引号的括号为\(
,\)
)。
- emacs lisp中的某些函数与
string-match-p
类似,但不解释正则表达式语法? - 由于在C中实现了正则表达式匹配,我假设匹配正确的正则表达式比某些
substring
/string=
循环更快;有没有一种方法可以将任意字符串转换为与该字符串匹配的正则表达式,并且只有该字符串?
谢谢,这在大多数情况下都有帮助。此外,对于一个68字符的查询字符串和一个≈300字符串来在字符串中进行搜索 - 使用'regexp-quote'的实现在编译代码中执行速度快40倍,未编译代码执行速度快60倍。对于“string-starts-with”,“string-ends-with”,然而,一个天真的'(string =(substring ...)...)'实现在编译代码中快了4倍(未编译代码慢了4倍)为相似的输入大小。 – kdb