我正在尝试提取两个字符之间的字符串。第一个角色有多次出现,我需要第一个字符的最后一次出现。我已经检查过类似的问题,但是如果多次出现第一个字符,所有建议的正则表达式将无法正常工作。
示例:
form: FormGroup;
attachmentAr = [{ name: "A" }, { name: "B" }, { name: "C" }]
constructor(private fb: FormBuilder) {
this.form = this.fb.group({
items: this.fb.array([]),
remark: [""]
});
}
ngOnInit() {
this.addCreds()
}
addCreds() {
const formArray = this.form.controls.items as FormArray;
formArray.push(this.fb.group({
attachment: '',
username: '',
password: '',
}));
}
submit() {
console.log(' all rows : ', this.form.value);
}
我的代码:
TEST-[1111]-20190603-25_TEST17083
当前结果:
string input = "TEST-[1111]-20190603-25_TEST17083";
var matches = Regex.Matches(input,@"(?<=-)(.+?)(?=_)");
var match = matches.OfType<Match>().FirstOrDefault();
var value = match.Groups[0].Value;
预期结果:
[1111]-20190603-25
答案 0 :(得分:4)
让我们尝试一些不同的模式:
(?<=-)([^-_]+?)(?=_)
我们使用[^-_]
代替.
:除 -
和_
答案 1 :(得分:2)
获得结果的一种选择(当然,还有很多选择)是以下模式:
.*-([0-9]*)_
然后获得第一个匹配的组(ID为1的组)。
因此您的代码将如下所示:
var input = "[1111]-20190603-25";
var pattern = @".*-([0-9]*)_";
var match = Regex.Match(input, pattern);
var value = match.Groups[1];