我一直在尝试使用匹配插入符号之间的任何文本的正则表达式,小于和大于插入符号。
所以它看起来像:^<我想要选择的文字> ^
我尝试了类似的东西,但它不起作用:^<(。*?)> ^
我认为这是可能的,对吗?我认为我经历过如此艰难时期的原因是因为插入符号可以作为量词。谢谢你的帮助!
更新
只是所以每个人都知道,他们跟着我而不是我工作
/\^<(.*?)>\^/
但事实证明,由于我使用.innerHTML属性获取字符串,因此我获得了html实体。换句话说,
> ... >
< ... <
要解决这个问题,我的正则表达式实际上是这样的:
\^<(.*?)((.|\n)*)>\^
这包括两者之间的字符串应该是任何字符或新行的事实。谢谢!
答案 0 :(得分:4)
您需要转义^
符号,因为它在JavaScript正则表达式中具有特殊含义。
/\^<(.*?)>\^/
在JavaScript正则表达式中,^
表示字符串的开头,除非使用了m
修饰符,在这种情况下,它意味着行的开头
答案 1 :(得分:0)
这应该有效:
\^<(.*?)>\^
在正则表达式中,如果要使用具有特殊含义的字符(插入符号,括号,管道......),则必须使用反斜杠将其转义。例如,(\w\b)*\w\.
将选择以点结尾的单词序列。
如果必须将正则表达式模式作为字符串传递,即javascript或perl中没有正则表达式文字,则可能必须使用 double 反斜杠,编程语言将转义为单个,然后由正则表达式引擎处理 多种语言的相同正则表达式:
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
代表word boundary。虽然我同意你的意思,但我自己也会使用它。