java正则表达式中“或”表示

有字符串如下<pfund="000001"><textstock="000002"fund="000003"/></p>需要用正则表达式将0000010000020000... 有字符串如下
<p fund="000001">
<text stock="000002" fund="000003" />
</p>
需要用正则表达式将000001 000002 000003解析出来,写了如下正则语句
<.[^<>]*?\\sfund=['\"]?(.*?)['\"]?(\\s.*?)?>
但是想同时将 fund 和 stock 匹配处出来。试了 将正则表达式中 fund替换成 fund|stock 却不行。该怎么办?
展开
 我来答
丁巴什罗大神cy
2019-04-04 · TA获得超过1784个赞
知道小有建树答主
回答量:1525
采纳率:86%
帮助的人:638万
展开全部

也就是用正则来匹配 fund="数字" stock="数字" 这些内容,并且捕捉其中的数字的意思,对吧

var reg=/\s+?(?:fund|stock)=\"(\d+)\"/gi;

这是亲测结果:

可以在这里在线测试:

在线正则表达式测试

GTA小鸡
高粉答主

2019-04-03 · 醉心答题,欢迎关注
知道大有可为答主
回答量:2.6万
采纳率:78%
帮助的人:1.3亿
展开全部
(fund|stock)=\"\d+?\"
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
雾明冰清
2019-04-03 · TA获得超过419个赞
知道小有建树答主
回答量:217
采纳率:33%
帮助的人:125万
展开全部

fund|stock 要用括号括起来作为一个整体,写成:

String pattern = "<.[^<>]*?\\s(fund|stock)=['\"]?(.*?)['\"]?(\\s.*?)?>";

不括起来的话

<.[^<>]*?\\sfund|stock=['\"]?(.*?)['\"]?(\\s.*?)?>

等价于

<.[^<>]*?\\sfund

或者 

stock=['\"]?(.*?)['\"]?(\\s.*?)?>

匹配到的结果就是

  • <p fund

  • <text stock="000002" fund

显然不是你想要的

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
mo...e@163.com
2019-04-03 · TA获得超过223个赞
知道答主
回答量:481
采纳率:41%
帮助的人:158万
展开全部
配音 吴桂苓
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式