Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 带有特定属性的正则表达式过滤器XAML标记_Regex_Xaml - Fatal编程技术网

Regex 带有特定属性的正则表达式过滤器XAML标记

Regex 带有特定属性的正则表达式过滤器XAML标记,regex,xaml,Regex,Xaml,我有以下与XAML标记匹配的正则表达式: 这将返回以下两行: <Button x:Name="Button1" /> <Button x:Name="Button2" Content="foo" /> 我想做的是过滤掉包含“Content=“foo”的标记 也有类似的例子,但在这种情况下,引号把我绊倒了 有什么想法吗?Regex 更新以匹配完全相反的内容(根据OP的要求) 正则表达式 使用否定的前瞻断言,如 ])*> 这意味着匹配前面没有Content=“fo

我有以下与XAML标记匹配的正则表达式:

这将返回以下两行:

<Button x:Name="Button1" />
<Button x:Name="Button2" Content="foo" />

我想做的是过滤掉包含“Content=“foo”的标记

也有类似的例子,但在这种情况下,引号把我绊倒了

有什么想法吗?

Regex
更新以匹配完全相反的内容(根据OP的要求) 正则表达式 使用否定的前瞻断言,如

])*>
这意味着匹配前面没有
Content=“foo”
,后面跟着
的0个或多个非code>(
[^>]*
)。为必要的分组添加括号

但请记住,使用正则表达式作为XML解析的替代品会让堆栈溢出上的人对您非常生气。。。所以最好匿名发布这样的问题

正则表达式
更新以匹配完全相反的内容(根据OP的要求) 正则表达式 使用否定的前瞻断言,如

])*>
这意味着匹配前面没有
Content=“foo”
,后面跟着
的0个或多个非code>(
[^>]*
)。为必要的分组添加括号

但请记住,使用正则表达式作为XML解析的替代品会让堆栈溢出上的人对您非常生气。。。所以最好匿名发布这样的问题


这个。。。但是请不要使用正则表达式来解析XML

我们使用
[^]
捕获的每个字符都会检查后面是否有一个空格和
Content=“foo”
。如果为true,我们将失败,因此捕获将回滚一个字符,正则表达式将检查终止的

你必须点击一下,这样正则表达式就被激活了

一些小提示:这个正则表达式是错误的,因为它试图解析XML,但是忽略它,它不会被
scocontent=“foo”
(忽略)或
Content=“foo”
(捕获)或
:Content=“foo”
(忽略)或
Content=“foo”
(捕获)愚弄。如果您使用的正则表达式解析器将
\s
视为与XML相同的空格字符列表:-),则这一点很明显,否则一些“奇怪的外来”空格可能会稍微破坏它。记住将其用于区分大小写的解析


这个。。。但是请不要使用正则表达式来解析XML

我们使用
[^]
捕获的每个字符都会检查后面是否有一个空格和
Content=“foo”
。如果为true,我们将失败,因此捕获将回滚一个字符,正则表达式将检查终止的

你必须点击一下,这样正则表达式就被激活了



一些小提示:这个正则表达式是错误的,因为它试图解析XML,但是忽略它,它不会被
scocontent=“foo”
(忽略)或
Content=“foo”
(捕获)或
:Content=“foo”
(忽略)或
Content=“foo”
(捕获)愚弄。如果您使用的正则表达式解析器将
\s
视为与XML相同的空格字符列表:-),则这一点很明显,否则一些“奇怪的外来”空格可能会稍微破坏它。记住将其用于区分大小写的解析

使用XML解析器。请看经典的stackoverflow帖子:上面是我真实问题的一个简化例子。我不能在实际问题的上下文中使用XML解析器,必须使用正则表达式。为什么你认为不能使用XML解析器?请发布你真正的问题,而不是那些解决方案对你的“真正问题”不起作用的“简化示例”。你应该始终标记你使用正则表达式的语言。考虑到您使用的是XAML,我认为这是C#语言。请使用XML解析器。请看经典的stackoverflow帖子:上面是我真实问题的一个简化例子。我不能在实际问题的上下文中使用XML解析器,必须使用正则表达式。为什么你认为不能使用XML解析器?请发布你真正的问题,而不是那些解决方案对你的“真正问题”不起作用的“简化示例”。你应该始终标记你使用正则表达式的语言。我认为这是C#考虑到你正在使用XAML。这非常接近!它实际上返回与我想要的相反的结果,我希望过滤掉Content=“foo”属性。仅供参考,因为我知道正则表达式在不同的上下文中表现不同,所以我用它来测试。感谢到目前为止的帮助,特别是对regex元素的周到描述。这非常接近!它实际上返回与我想要的相反的结果,我希望过滤掉Content=“foo”属性。仅供参考,因为我知道正则表达式在不同的上下文中表现不同,所以我用它来测试。感谢到目前为止的帮助,特别是对regex元素的深思熟虑的描述。这是一种有点奇怪的方式,但它应该产生正确的结果+从我这里得到1。但是,我建议将
\s+
替换为
\b
。@Justin否,除非您想捕获
:内容。我的第一次迭代使用了它,但后来我改变了想法(我已经重写了至少三次这个正则表达式),我知道,但我个人不会为此担心。担心
:内容
可能是过火了。另外,在您当前的模式中,您可以将lookback中的
[^]*\s+
替换为
\s
,这将意味着相同的内容。@Justin Strange。。。我确信我的正则表达式是不同的。可能是从错误的RegExr复制粘贴的。Flash讨厌我,一半时间都不让我复制粘贴。我赞成过度杀戮!“如果你必须做某事,不妨把它做好”你仍然不需要
+
。在您拥有的位置上,
\s+
将执行与
\s
相同的操作。这是一种有点奇怪的方式,但它应该会产生正确的结果+从我这里得到1。但是,我建议将
\s+
替换为
\b
。@Justin否,除非
/<[^>]*Content="foo".*?>/g
x = ['<Button x:Name="Button1" /><Button x:Name="Button2" Content="foo" /><Button x:Name="Button1" /><Button Content="foo" />']

console.log( x[0].match(/<[^>]*Content="foo".*?>/g) )
<((?!Content="foo")[^>])*>
<([^<>](?!\sContent\s*=\s*("foo"|'foo')))*>