我一直在努力为我的一个小项目获得正常的表达式。任何人都可以帮助我使用匹配<>
符号内的任何内容的正则表达式,但只有当它们前面没有\符号时才能帮助我吗?
例如:
<Escaped characters \<\> are right in the middle of this sentence.>, <Here is another sentence.>
必须匹配
1: Square brackets \<\> are right in the middle of this sentence.
2: here is another sentence.
到目前为止,我已经管理了
/<([^\\][^>]*?)>/ig
但是这给了
1: Escaped characters \<\
2: Here is another sentence.
我做错了什么? :(
答案 0 :(得分:1)
Crimson的答案对我来说在Regex Powertoy中使用<Escaped characters \<\> are right in the middle of this sentence.>, <Here is another sentence.>
作为测试进行测试并不起作用,但这似乎有效:
/<(?<!\\<).*?>(?<!\\>)/gi
给我两场比赛:
<Escaped characters \<\> are right in the middle of this sentence.>
和<Here is another sentence.>
编辑:我看了一下字符串Gumbo说不匹配。我在regex.powertoy.org中没有遇到任何问题:
alt text http://img362.imageshack.us/img362/3227/regexpowertoyorg.png
在测试中,我确实将原始发布的正则表达式更改为: /(?<!\\)<(.*?)(?<!\\)>/gi
,这样效率更高(探测次数更少)。
另外我在regex.powertoy.org的输出中注意到第四个字符串(\<hello <match\<this\>> but not this\> looks odd... the printed replacement is just
匹配but the match detail clearly shows that the match is correct;
匹配\ . But I also notices that the first and third test string replacements don't print the "
`“转义尖括号。稍后(但是并非详尽无遗)我认为这是通过javascript显示文本的问题,转义的尖括号不打印转义字符,非空的尖括号根本不打印。我想这个是因为javascript将其视为HTML。所以;我认为这个正则表达式工作正常。但你应该离线测试它。
答案 1 :(得分:1)
我会用这个:
/<((?:[^\\>]+|\\.)*)>/
答案 2 :(得分:0)
您需要的是后视操作员。在这里阅读它们:
http://www.perl.com/pub/a/2003/07/01/regexps.html
这是你需要的表达方式:
/<(?!<\\).*>(?!<\\)/
由于上面的*运算符是贪婪的,它应该包括任何转义的尖括号/&lt; /&GT;
编辑:我假设您希望匹配并返回转义的尖括号。如果你想要不同的东西,请澄清 - 给出一个简洁的例子a)输入字符串和b)要返回的匹配
答案 3 :(得分:0)
试试这个
/<[^\\]([^>]+)>/