【发布时间】:2012-08-11 02:34:33
【问题描述】:
我在这里查看了多个示例,它们都部分有效,但不是全部一起工作。
我正在尝试创建一个正则表达式来替换基于变量的字符串中的文本。我让替换工作,但仅在第一次搜索时。等等。
目标是替换: 文本:{1} 来自用户 1 的文本。
{2} 来自用户 2 的文本。
{1} 来自用户 1 的文本。
- 如果是 QueryString。我需要替换 {} 之间的文本。
如果 QueryString = a user # 例如 1 则显示名称,否则显示“用户无”:
响应:文本:NAME1 来自用户 1 的文本。
用户无文本来自用户 2。
NAME1 来自用户 1 的文本。
- 如果是 QueryString。
-----------------------------------
好的 - 我终于拿到了文件:
<%
Dim StrX, CallMe, varID, varFirmID, varBKID
CallMe = "0"
CallMe = Request.QueryString("x")
StrX = "Memo Tracking:<br />"
StrX = StrX & "{1} Test Text 1<br/ >{2} Test Text 2<br/ >{1} Test Text 1<br/ >{2} Test Text 2<br/ >" 'Data - will replace with Recordset Data later - eventually I will also add [] for two sets
varFirmID = "0"
varBKID = "0"
Set re = new RegExp
re.IgnoreCase = true
re.Global = true
re.Pattern = "\{(.*)\}" 'find {} part
set matches = re.Execute(StrX)
'finds Matches of Firms --------------------------------
If matches.Count > 0 Then
For Each Match in Matches
varFirmID = matches.item(0).submatches(0)
If Callme = varFirmID Then
StrX =(Replace(StrX,matches.item(0).submatches(0),"Replaced Name:"))
End If
If Callme <> varFirmID Then
StrX =(Replace(StrX,matches.item(0).submatches(0),"NO NAME:"))
End If
Response.Write Strx
'End loop if Match --------------------------------
Next
End If
%>
我不断得到部分结果。我觉得我需要在 for 代码之后添加一个“do while 循环”。
目标是... querystring(x)=1 结果:
备忘录追踪:
替换名称 1:测试文本 1
无名称:测试文本 2
替换名称 1:测试文本 1
NO NAME:测试文本 2
目标是... querystring(x)=2 结果:
备忘录追踪:
无名称:测试文本 1
替换名称 2:测试文本 2
无名称:测试文本 1
替换名称 2:测试文本 2
(我将使用 varFirmID 作为键在循环中运行记录集 - 所以我可能需要建议在哪里插入它。) 非常感谢您的帮助!
【问题讨论】:
标签: regex asp-classic vbscript