你能給我解釋一下下面的正則運算式嗎?為什么它必須如此復雜,它所要做的就是檢查em標簽是否以文本形式呈現,例如<em>text</em>,<pre>whatever</pre>或類似的東西,基本上是突出顯示的單詞。https://regex101.com/非常詳細地解釋了它的作用。
可以簡化嗎?
[Fact]
public async Task Handle_ShouldReturnHighlightedDescriptions_WhenGivenEmptyInput()
{
// Arrange
var query = new GetProductsQuery();
// Act
var actual = await _queryHandler.Handle(query, default);
// Assert
actual.Products.Should().AllSatisfy(p =>
p.Description.Should().NotMatchRegex(@"<\s*([^ >] )[^>]*>.*?<\s*/\s*\1\s*>"));
}
uj5u.com熱心網友回復:
取決于目的是什么,但是決議 HTML 很快就會變得復雜。
如果您只想檢查 HTML 字串是否包含任何標簽,則只需檢查模式“ <\w”。但是,如果 HTML 還可能包含注釋(和 CData 部分),那么您必須消除誤報,例如<!-- <em> -->,這是可能的,但需要更復雜的模式。
但是您示例中的模式似乎不僅用于檢測標簽,還用于提取從開始到結束標簽的整個元素。不幸的是,這更加復雜,因為該模式沒有考慮嵌套元素,例如<em>..<em>..</em>..</em>. 如果您需要支持這一點,您不能單獨使用正則運算式,因為正則運算式不支持匹配遞回模式。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/514878.html
標籤:C#。网正则表达式
