1

我一直在尝试使用匹配插入符号、小于和大于插入符号之间的任何文本的正则表达式。

所以它看起来像:^<我想要选择的文本>^

我已经尝试过这样的事情,但它不起作用:^<(.*?)>^

我假设这是可能的,对吧?我认为我一直处于艰难时期的原因是插入符号用作量词。感谢我得到的任何帮助!

更新

就让每个人都知道,他们追随我不是在工作

 /\^<(.*?)>\^/

但是,事实证明我正在获取 html 实体,因为我是通过使用 .innerHTML 属性获取字符串的。换句话说,

> ... &gt;
< ... &lt;

为了解决这个问题,我的正则表达式实际上是这样的:

\^&lt;(.*?)((.|\n)*)&gt;\^

这包括中间的字符串应该是任何字符或换行符这一事实。谢谢!

4

2 回答 2

4

您需要转义该^符号,因为它在 JavaScript 正则表达式中具有特殊含义。

 /\^<(.*?)>\^/

在 JavaScript 正则表达式中,^表示string 的开头,除非m使用了修饰符,在这种情况下,它表示line 的开头

于 2012-07-30T20:23:50.910 回答
0

这应该有效:

\^<(.*?)>\^

在正则表达式中,如果要使用具有特殊含义的字符(插入符号、方括号、管道...),则必须使用反斜杠对其进行转义。例如,(\w\b)*\w\.将选择以点结尾的单词序列。

小心!

如果您必须将正则表达式模式作为字符串传递,即没有像 javascript 或 perl 中那样的正则表达式文字,您可能必须使用反斜杠,编程语言会将其转义为单个反斜杠,然后由正则表达式引擎。
多种语言的相同正则表达式:

Python:
  import re
  myRegex=re.compile(r"\^<(.*?)>\^") # The r before the string prevents backslash escaping
PHP:
  $result=preg_match("/\\^<(.*?)>\\^/",$subject); // Notice the double backslashes here?
JavaScript:
  var myRegex=/\^<(.*?)>\^/,
      subject="^<blah example>^";
  subject.match(myRegex);

如果您告诉我们您使用的是哪种编程语言,我们将能够为您提供一些完成的代码以供使用。

编辑:哎呀,甚至没有注意到这被标记为javascript。然后,您根本不必担心双反斜杠。

编辑2:\b表示一个单词边界。虽然我同意你的就是我自己会用的。

于 2012-07-30T20:24:10.513 回答