我的目标是找到开始和结束模式并将其从长字符串中删除
{BEGIN:781}{hopi_docgen4}{sub_chronic_conditions_hpi}{END:}{OPh_cc_docgen}{END:621}{BEGIN:768}{cc_reviewed} {cc_rev_prov}{END:768}
必需的regx应满足此=> 开始和结束后跟一个完整的冒号然后跟着整个数字,所有这些都用大括号括起来,就像这个{}一样,无论情况如何都必须正常工作
{Begin:100} or {end:112} or {BEGIN:105} or {END:398}
目前我的解决方案是
\b{begin:[0-1][0-1][0-1]}\b
答案 0 :(得分:1)
您可以使用单个正则表达式替换:
public string FindMacroType(string sentence)
{
return Regex.Replace(sentence, @"(?i){(?:END|BEGIN):[0-9]{3}}", "");
}
请参阅regex demo
模式详情
(?i)
- 不区分大小写的修饰符{
- 文字{
(无需逃避,但你可以)(?:END|BEGIN)
- end
或begin
:
- 冒号[0-9]{3}
- 3个ASCII数字(如果可以有1位或更多位数,只需将{3}
限制量词替换为匹配1次或多次出现次数的+
量词数。}
- 文字}
(无需转义)。答案 1 :(得分:0)
感谢所有的负面投票; 我找到了答案;
public string FindMacroType(string sentence)
{
Regex begin = new Regex(@"(\{)(BEGIN\:)[0-9][0-9][0-9](\})",RegexOptions.IgnoreCase);
sentence = begin.Replace(sentence,"");
Regex end = new Regex(@"(\{)(END\:)[0-9][0-9][0-9](\})", RegexOptions.IgnoreCase);
sentence = end.Replace(sentence, "");
return sentence;
}
答案 2 :(得分:-1)
在我看来,正则表达式已被过度使用。它只应在字符串方法不起作用或变得太复杂时使用。在这种情况下,我认为字符串方法更好:
private boolean isSensorAvialable() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
return ActivityCompat.checkSelfPermission(AppContext, Manifest.permission.USE_FINGERPRINT) == PackageManager.PERMISSION_GRANTED &&
AppContext.getSystemService(FingerprintManager.class).isHardwareDetected();
} else {
return FingerprintManagerCompat.from(AppContext).isHardwareDetected();
}
}