问题标签 [capturecollection]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
2298 浏览

c# - 如何单独替换组的每个捕获?

我有一个正则表达式,它GroupCollection在它的捕获中使用 s 来捕获一组项目 ID(可以用逗号分隔,也说明最后一个有“和”这个词):

(\bItem #(?<ITEMID>\d+))|(,\s?(?<ITEMID>\d+))|(,?\sand\s(?<ITEMID>\d+))

有没有一种简单的方法使用 C# 的Regex类来用 url 替换 ITEMID 数字?现在,我有以下内容:

我在网上找到的CustomReplace方法是在字符串源中用另一个字符串替换一个字符串的简单方法。问题是我确信可能有一种更简单的方法,可能会根据需要使用Regex类来替换GroupCollections 。我只是想不通那是什么。谢谢!

示例文本:

Hello the items you are looking for are Item #25, 38, and 45. They total 100 dollars.

25, 38, 并且45应该替换为我正在创建的 URL 字符串(这是一个 HTML 字符串)。

0 投票
1 回答
341 浏览

c# - c# 正则表达式捕获

我正在匹配一个包含可选组和非可选组混合的重复组。当我遍历捕获时,捕获集合总是折叠的,即它们不会为不匹配的项目插入空元素。

有没有办法保留捕获集合中的匹配顺序,以便将任何省略的可选项插入为空,从而确保捕获集合元素跨组对应?

为了澄清,假设我的重复(父)组匹配了三次,并且在三个匹配中的一个中,省略了一个可选的子组,但存在于其他两组中,我最终得到了子组的捕获集合比其他捕获集合少一个元素。我如何知道哪些父组省略了可选项目?

我想可以使用捕获集合项的 Index 属性并检查它是否在父组的范围内,但是如果非匹配项在捕获集合中返回 null 项会更容易。有没有办法做到这一点?