我想从输入中提取表情符号。
例如,输入:
`<eid=1> valid get 1`
`<eid = > invalid `
`<exd = 1> invalid`
`< eid = 1000> valid get 1000`
我知道如何匹配这些字符串,但我不知道如何从匹配的字符串中提取这些ID。
答案 0 :(得分:0)
使用正则表达式
$.ajax
答案 1 :(得分:0)
你可以这样做。如果您不想将每个项目存储在一个数组中(例如,您有html代码),则可以将所有值存储为一个字符串,如下所示:
var input = @"`<eid=1> valid get 1`
`<eid = > invalid `
`<exd = 1> invalid`
`< eid = 1000> valid get 1000`";
var regex = new Regex(@"(?<open>\=).*?(?<final-open>\>)");
var matches = regex.Matches(input).Cast<Match>().Select(m => m.Groups["final"].Value).Distinct().ToList();
foreach (var match in matches)
{
// here you have all the matches
var id = int.Parse(match.Trim());
}
此方法设置所需匹配项的开始和结束标记,这是开放标记'\ =',这是结束标记'&gt;':
var regex = new Regex(@"(?<open>\=).*?(?<final-open>\>)");
答案 2 :(得分:0)
您需要了解什么是匹配,什么是捕获以及如何匹配特定数据的捕获。
在正则表达式领域,匹配与捕获和基本分组之间存在差异。
您希望匹配整个值<eid=8>
,但希望将值8
转换为捕获。这是通过添加分组( )
模式来建立1到多个捕获组来完成的。对于匹配,可以保存一个或多个从1到N开始索引的分组。归零是一个自动完成的特殊组,稍后会解释。
因此,对于数据<eid=8>
,要对 capture 进行分组,请使用此正则表达式<\w+=(\d+)\>
(而不是可行模式<\w+=\d+\>
)。分组是将数字放入1
的匹配捕获组中,其值为8
。
那么群体到底是什么?
Groups[0]
始终 整个匹配,例如您所见<eid=8>
。Groups[1-N]
是指定( )
构造时的单独捕获。因此,对于我们的示例,Groups[1].Value
是8
的数量。 很好,它可以回答你的问题。 (<?<{name here}>... )
来进行命名匹配捕获。根据该逻辑,我们可以将模式更改为<\w+=(?<TheNumbers>\d+)\>
,然后我们可以使用Groups["TheNumbers"].Value
甚至Groups[1].Value
进行提取。