我有以下示例:
FirebaseMessageService
我需要找到并替换一个代码段:
public override void HandleIntent(Intent intent)
{
try
{
if (intent.Extras != null)
{
var builder = new RemoteMessage.Builder("MyFirebaseMessagingService");
foreach (string key in intent.Extras.KeySet())
{
builder.AddData(key, intent.Extras.Get(key).ToString());
}
this.OnMessageReceived(builder.Build());
}
else
{
base.HandleIntent(intent);
}
}
catch (Exception)
{
base.HandleIntent(intent);
}
}
在我的例子中,我想找到并替换它:
<strong><span style="text-decoration: underline;">LAbel<br>
</span></strong>
<span style="color: #1f497d;">Label:</span>
[[<span href="#" style="background: red; color: white;" field-id="97c97578-ac1b-4495-a3a7-85e75d0acf40"> some text ... </span>]]
[[<span href="#" style="background: red; color: white;" field-id="db983948-6458-4be8-9044-174093d39976"> some other text ... </span>]]<br>
我的模式是:
[[<span somestyle_and_attributes field-id="some GUID"> some random text </span>]]
但是因为我希望正则表达式从GUID和field-id开始找到一个匹配并稍稍向后移动(直到最近的 [[span )它还包括前面的span标记。
我可以在打开的span标签与模式(样式,属性等)之间包含所有内容,但我觉得有更简单的方法可以找到最接近的匹配。
答案 0 :(得分:-1)
您可以尝试以下方式:
\[\[<span [^>]* field-id="db983948-6458-4be8-9044-174093d39976">.*</span>\]\]
<小时/> 更新: 感谢@Juharr和@Mong朱,他们指出不应该使用Regex解析HTML dom树 https://www.johndcook.com/blog/2013/02/21/can-regular-expressions-parse-html-or-not/