正则表达式问题

我的内容是这样的<?xmlversion="1.0"encoding="UTF-8"?><simulatorTransactionData><dsr><suit><par... 我的内容是这样的
<?xml version="1.0" encoding="UTF-8"?>
<simulatorTransactionData>
<dsr>
<suit>
<params>
<apptype value="11" />
<maxtimes value="30" />
<reqMsg value="<?xml version="1.0" encom>127.0.</itmttm>m></in></eb>" />
</params>
<inputs />
<outputs />
<return value="<?xml version="1.0000</f></rd></itm></out></eb>" />
<exception />
</suit>
</dsr>
</simulatorTransactionData>

想通过正则表达式匹配出 <reqMsg value=" 到这行结尾的" />中的内容,请问该怎么写呢?我试半天都没成功 请大师帮忙谢谢!
展开
 我来答
wodexxh
2011-03-10 · 超过22用户采纳过TA的回答
知道答主
回答量:65
采纳率:0%
帮助的人:39.1万
展开全部

(?<=<reqMsg\s*value=").*?(?="\s*/>)

这样不知道 是不是你想要的

bitterbeans
2011-03-10 · TA获得超过2129个赞
知道小有建树答主
回答量:607
采纳率:0%
帮助的人:554万
展开全部
首先你给的xml是不规范的。硬要匹配的话,可以试试下面的(你要的字符串在group[1]中)
<reqMsg\s+value\s*=\s*"(.*?)"\s*/>
追问
谢谢! 不过这样还是不行
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
vxsipc
2011-03-10 · TA获得超过119个赞
知道答主
回答量:30
采纳率:0%
帮助的人:0
展开全部
性和闰年等问题.....

对于日期的有效范围,不同的应用场景会有所不同。MSDN中定义的DateTime对象的有效范围是:0001-01-01 00:00:00到9999-12-31 23:59:59。

UNIX时间戳的0按照ISO 8601规范为 :1970-01-01T00:00:00Z。

先考虑与年份无关的前三条规则,年份可统一写作

(?!0000)[0-9]

下面仅考虑月和日的正则

1. 包括平年在内的所有年份的月份都包含1-28日

(0[1-9]|1[0-2])-(0[1-9]|1[0-9]|2[0-8])

2. 包括平年在内的所有年份除2月外都包含29和30日

(0[13-9]|1[0-2])-(29|30)

3. 包括平年在内的所有年份1、3、5、7、8、10、12月都包含31日

(0[13578]|1[02])-31)

合起来就是除闰年的2月29日外的其它所有日期

(?!0000)[0-9]-((0[1-9]|1[0-2])-(0[1-9]|1[0-9]|2[0-8])|(0[13-9]|1[0-2])-(29|30)|(0[13578]|1[02])-31)

接下来考虑闰年的实现

1 : 四年一闰
([0-9](0[48]|[2468][048]|[13579][26])

2 : 百年不闰,四百年再闰
(0[48]|[2468][048]|[13579][26])00

3 : 合起来就是所有闰年的2月29日
([0-9](0[48]|[2468][048]|[13579][26])|(0[48]|[2468][048]|[13579][26])00)-02-29)

四条规则都已实现,且互相间没有影响,合起来就是所有符合DateTime范围的日期的正则

^((?!0000)[0-9]-((0[1-9]|1[0-2])-(0[1-9]|1[0-9]|2[0-8])|(0[13-9]|1[0-2])-(29|30)|(0[13578]|1[02])-31)|([0-9](0[48]|[2468][048]|[13579][26])|(0[48]|[2468][048]|[13579][26])00)-02-29)$

考虑到这个正则表达式仅仅是用作验证,所以捕获组没有意义,只会占用资源,影响匹配效率,所以可以使用非捕获组来进行优化。

^(?:(?!0000)[0-9]-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[0-9](?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)-02-29)$
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式