我使用EditPad Pro文本编辑器。我需要将字符串读入代码,但是我需要忽略以标签“ / *”或tab + / *开头的字符串,例如:
/**
* Light up the dungeon using "claravoyance"
*
* memorizes all floor grids too.
**/
/** This function returns TRUE if a "line of sight" **/
#include "cave.h"
(tab here) /* Vertical "knights" */
if (g->multiple_objects) {
/* Get the "pile" feature instead */
k_ptr = &k_info[0];
}
put_str("Text inside", hgt - 1, (wid - COL_MAP) / 2);
/* More code*** */
我喜欢退货:
"Text inside"
我已经尝试了这一点(读取不以序列开头的字符串的正则表达式),但对我不起作用:
^(?! \*/\t).+".*"
有什么帮助吗?
编辑:我用过:
^(?!#| |(\t*/)|(/)).+".*"
它返回:
put_str("Text inside"
我即将找到解决方案。
EditPad很明显在pro版本6和lite版本7中支持可变长度后视,因为它的风格表示为“ JGsoft”:Just Great Software正则表达式引擎。
知道这一点并且无需使用捕获组,您可以将两个可变长度的lookbehinds组合在一起:
(?<!^[ \t]*/?[*#][^"\n]*")(?<=^[^"\n]*")[^"]+
(?<!^[ \t]*/?[*#][^"\n]*")
否定后视避免了带引号的部分之前带有[ \t]*/?[*#]
任何注释,该注释可以带有任意数量的空格/制表符。取得了/
可选的,因为一个多行注释也可以开始*
。(?<=^[^"\n]*")
肯定地说,肯定有多少存在[^"\n]
,characters, that are no quotes or newlines
后面跟着一个引号。[^"]+
由于应该始终保持平衡的报价,现在应该很方便,以匹配第一个non-quotes
之后double-quote
的字符串(位于后面的内部)"
的任何线(未平衡),可能会发生,更改结束:[^"]+
至[^"\n]+(?=")
对于这个问题,可能有不同的解决方案。希望能帮助到你 :)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句