如何用正则表达式把括号中的数据提出?
下面是一个PDF伪码,我用fso读出,要把像(*)Tj个括号中间的数据全部提出来,如(PaperSamplingRequestReport)Tj中的"PaperSampl...
下面是一个PDF伪码,我用fso读出,要把像 (*) Tj 个括号中间的数据全部提出来,如(Paper Sampling Request Report) Tj中的"Paper Sampling Request Report",应该如何做呢~~~
13.92 595.20 TD
/F0 10.00 Tf
(Run Date:) Tj
ET
q
65.80 594.04 111.96 9.76 re W n
BT
65.80 594.44 TD
(05-JUL-11 04:07:21) Tj
ET
Q 0 g 0 G
BT
32.92 585.44 TD
/F0 10.00 Tf
(Page:) Tj
ET
q
65.76 582.80 31.00 11.24 re W n
BT
91.24 584.72 TD
(1) Tj
ET
Q 0 g 0 G
BT
265.00 594.80 TD
/F0 10.00 Tf
(Paper Sampling Request Report) Tj
308.76 1.20 TD
(Report: PXINVR10813) Tj
我是用下面的VBA代码来获取的,但试了所有回答的都不行。。还望帮忙。
Function RegPDF(str As String)
Dim oReg As Object, mhs As Object, mh As Object
Set oReg = CreateObject("vbscript.regexp")
With oReg
.Global = True
.Pattern = "\((.*?)\)\sTj"
End With
Set mhs = oReg.Execute(str)
If mhs.Count Then
Reg = mhs(0).SubMatches(0)
End If
End Function
?RegPDF("(Paper Sampling Request Report) Tj")=Paper Sampling Request Report 的才算对。 展开
13.92 595.20 TD
/F0 10.00 Tf
(Run Date:) Tj
ET
q
65.80 594.04 111.96 9.76 re W n
BT
65.80 594.44 TD
(05-JUL-11 04:07:21) Tj
ET
Q 0 g 0 G
BT
32.92 585.44 TD
/F0 10.00 Tf
(Page:) Tj
ET
q
65.76 582.80 31.00 11.24 re W n
BT
91.24 584.72 TD
(1) Tj
ET
Q 0 g 0 G
BT
265.00 594.80 TD
/F0 10.00 Tf
(Paper Sampling Request Report) Tj
308.76 1.20 TD
(Report: PXINVR10813) Tj
我是用下面的VBA代码来获取的,但试了所有回答的都不行。。还望帮忙。
Function RegPDF(str As String)
Dim oReg As Object, mhs As Object, mh As Object
Set oReg = CreateObject("vbscript.regexp")
With oReg
.Global = True
.Pattern = "\((.*?)\)\sTj"
End With
Set mhs = oReg.Execute(str)
If mhs.Count Then
Reg = mhs(0).SubMatches(0)
End If
End Function
?RegPDF("(Paper Sampling Request Report) Tj")=Paper Sampling Request Report 的才算对。 展开
3个回答
展开全部
(?<=\()[\w\W]*?(?=\)\s*Tj)正则表达式工具测试里通过,代码中没有测试
在代码中,相关字符需要转义
你代码中:
Pattern="(?<=\\()[\\w\\W]*?(?=\\)\\s*Tj)"; //这样试试,转义后的,vba没有用过
在代码中,相关字符需要转义
你代码中:
Pattern="(?<=\\()[\\w\\W]*?(?=\\)\\s*Tj)"; //这样试试,转义后的,vba没有用过
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
''''''''''''''''''Set mhs = oReg.Execute(str)
''''''''''''''''''''''If mhs.Count Then
'''''''''''''''''''''Reg = mhs(0).SubMatches(0)
'''''''''''''''''''''''End If
.Pattern = "(?<=\()([^\)]+)(?=\) Tj)"
Set Matches = oReg.Execute(str)
For Each Match in Matches
s = Match.Value
Next
End Function
''''''''''''''''''''''If mhs.Count Then
'''''''''''''''''''''Reg = mhs(0).SubMatches(0)
'''''''''''''''''''''''End If
.Pattern = "(?<=\()([^\)]+)(?=\) Tj)"
Set Matches = oReg.Execute(str)
For Each Match in Matches
s = Match.Value
Next
End Function
追问
你的正则我修改了一下可以找到正确的值,但是前面的括号如何去掉?
.Pattern = "(?=\()([^\)]+)(?=\) Tj)"
------------------------------------------------------------------------
?RegPDF("(Paper Sampling Request Report) Tj")
(Paper Sampling Request Report
追答
哦...VB不支持 "后向环视 "
.Pattern = "\b([^\(\)]+)(?=\) Tj)"
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
注释了\(\)
更多追问追答
追问
能否说得详细一点。。。我有试过 .Pattern = ".*\((.*)\)"但是没有用。。
追答
\((.*?)\)\sTj或者^[(](.*?)[)]\sTj
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询