匹配第二个实例

时间:2018-05-23 06:51:42

标签: c# regex match

我有一个这样的字符串,我只想知道它是否包含' N2'在其中,但不是EN2',所以应该忽略它:

EN2T65G872N2ULKJJDLO05

如果有帮助的话,它总是从EN2开始,但是N数可能与N3不同,例如。我只是不希望它错误地将单位识别为N2,除非它实际上包含

我将如何做到这一点?

3 个答案:

答案 0 :(得分:2)

这样的事情:

var rx = new Regex("(?:^EN[0-9].*?)(N[0-9])");

var match = rx.Match(str);

if (match.Success)
{
    var nx = match.Groups[1].Value;
}

^表示字符串开头,(?: )是非捕获组,因为我们对它不感兴趣,.*?是任意次数的任何字符但不贪心。

答案 1 :(得分:0)

使用分组来匹配第二种情况:onCheck = (checkedKeys, event) => { how can get node checked??? it always returns last node const node = this.myRef.current; console.log(node) } componentDidMount() { // I have to do something here??? } render() { const loop = (data) => { return data.map((item) => { if (item.children && item.children.length) { return <TreeNode ref={this.myRef} title={item.name} key={item.key} checked={item.checked} >{loop(item.children)}</TreeNode>; } return ( <TreeNode ref={this.myRef} title={item.name} key={item.key} isLeaf={item.isLeaf} checked={item.checked} /> ); }); }; return ( <div className="draggable-container"> <Tree // Expand expandedKeys={this.state.expandedKeys} onExpand={this.onExpand} autoExpandParent={this.state.autoExpandParent} // Draggable draggable onDragStart={this.onDragStart} onDragEnter={this.onDragEnter} onDrop={this.onDrop} // Select && Check onSelect={this.onSelect} checkable onCheck={this.onCheck} checkedKeys={this.state.checkedKeys} > { loop(this.state.treeData) } </Tree> </div> ); }

https://regex101.com/r/005u2q/1

对于 N号可能不同使用:N2.*?(N2)

答案 2 :(得分:-1)

您可以在正则表达式中使用negative lookbehind

(?<!E)N[0-9]

此正则表达式将匹配包含“N”字符的任何序列:前面没有“E”字符;随后是任何数字。 以下是一个示例:RegExr