不包括起始字符串的正则表达式
我正在使用正则表达式,例如
<cfset a = ReFind("DESCRIBE\+[^>]*>", myResult.Header, 1, true) />
如果我需要此正则表达式在计算 LEN 和位置值时不应包含 DESCRIBE+
。我该怎么写呢?
I am using a regular expression like
<cfset a = ReFind("DESCRIBE\+[^>]*>", myResult.Header, 1, true) />
If I need that this Regular Expression should not include DESCRIBE+
in calculating the LEN and Position values. How should I write it?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
DESCRIBE+ 是 9 个字符,你不能只加/减这个数字然后做数学吗?
DESCRIBE+ is 9 characters, cant you just add / subtract this number and do math.
ReFind(当第四个参数设置为 true 时,正如您所做的那样)将返回一个具有两个值(pos 和 len)的结构。其中每一个都是一个数组。如果您的正则表达式中没有任何捕获组(括号),那么这两个数组都只有一个值长 - 表示完整的正则表达式匹配。如果您定义了捕获组(正如我在示例中所做的那样),则每个数组中的后续值将与相应的捕获组相对应。在我的示例中,只有一个捕获组,因此每个数组的长度为 2(假设存在匹配项)。因此,第二位置处的值将与第一捕获组相关。
重新查找
ReFind (when the fourth param is set to true, as you have done) will return a structure with two values (pos and len). Each of these is an array. If you don't have any capture groups ( parenthesis) within your regex, then both of these arrays will be just one value long - representing the full regex match. If you have capture groups defined (as I do in my example), then the subsequent values in each array will correspond with the respective capture group. In my example, there is only one capture group, so each array will be of length 2 (assuming there is a match). The values at the second position will therefore relate to the first capture group.
ReFind
如果 ColdFusion 支持后视,则可以使用
(?<=DESCRIBE\+)[^>]*>
If ColdFusion supports look behind, then you can use
(?<=DESCRIBE\+)[^>]*>