一个字符串的正则表达式不具有启动/ *(Regular expression for a strin

2019-10-20 20:38发布

我使用的EditPad Pro文本编辑器。 我需要读字符串转换成代码,但我需要忽略那些与标签开始“/ *”或标签+ / *,例如:

/**
 * 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"

我接近找到解决办法。

Answer 1:

的EditPad明显支持可变长度的回顾后在专业版6精简版的版本7,因为它的味道被表示为“JGsoft” : 好了软件正则表达式引擎 。

知道了这一点,并在不使用捕捉组 ,你可以将两个可变长度lookbehinds :

(?<!^[ \t]*/?[*#][^"\n]*")(?<=^[^"\n]*")[^"]+
  • (?<!^[ \t]*/?[*#][^"\n]*")用于避免引述部分通过前面的负回顾后[ \t]*/?[*#]任何意见,这可以通过空间/选项卡的任何量之前。 在制造/可选的,因为一个多行注释也可以启动*
  • (?<=^[^"\n]*")用于确保阳性回顾后,即有任何量的[^"\n]characters, that are no quotes or newlines接着前一个报价。
  • [^"]+作为应该总是平衡的报价,现在应该是方便的,相匹配的non-quotes后的第一个double-quote (这是回顾后内)
  • 如果单个"可以以任何线(未均衡)发生,更改结束: [^"]+ ,以[^"\n]+(?=")

也许有对这个问题的不同解决方案。 希望能帮助到你 :)



Answer 2:

这里有一个方法: ^(?!\t*/\*).*?"(.+?)"

分解:

^(?!\t*/\*)  This is a negative lookahead anchored to the beginning of the line, 
             to ensure that there is no `/*` at the beginning (with or 
             without tabs)

.*?"         Next is any amount of characters, up to a double-quote. It's lazy 
             so it stops at the first quote


(.+?)"       This is the capture group for everything between the quotes, again
             lazy so it doesn't slurp other quotes


Answer 3:

你可以使用这个表达式:

/\*.*\*/(*SKIP)(*FAIL)|".*?"

工作演示

编辑:如果你使用的EditPad那么你可以使用这个表达式:

"[\w\s]+"(?!.*\*/)


文章来源: Regular expression for a string that does not start with a /*
标签: regex editpad