首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Visual 2015 Regex替换不工作(Regex Match Working)

Visual 2015 Regex替换不工作(Regex Match Working)
EN

Stack Overflow用户
提问于 2017-06-01 11:49:46
回答 2查看 695关注 0票数 1

我试图在一个使用<item></item>而不是<item><description></description></item>的大型项目中替换XML文档注释。我认为使用Visual查找和替换功能可能是最快的方法。因此,我想出了以下正则表达式:

代码语言:javascript
复制
(?ixs)(?<=///.*<item\b[^>]*>)(?<description>[^\<]*?)(?=</\s*?item>)

在Visual 2015的“查找和替换”功能中的“查找文件”模式中,regex与项目中的249行匹配。

但是,如果我尝试使用“查找并替换”,并在“替换为”文本框中使用<description>${description}</description>,则会得到零匹配。

我尝试使用$1$2$+而不是${description},但在每种情况下我都得到零匹配。

我还在“替换为”文本框中使用了一个文字值REPLACEMENT,它将所有249行替换为REPLACEMENT

我在2015和2017中都尝试了这一点,结果是一样的。

根据MSDN,这应该是替换文本的语法。那么,为什么它不能在Visual中工作呢?

注意:我正在尝试的项目是https://github.com/apache/lucenenet,以防有人想在我同样的条件下进行测试。

环境:

  • Windows 10 x64
  • Visual 2015社区版(更新3)

样本输入

代码语言:javascript
复制
/// For more examples, see the <see cref="Lucene.Net.Analysis"/> namespace documentation.
/// <para/>
/// For some concrete implementations bundled with Lucene, look in the analysis modules:
/// <list type="bullet">
///   <item>Common:
///       Analyzers for indexing content in different languages and domains.</item>
///   <item>ICU:
///       Exposes functionality from ICU to Apache Lucene.</item>
///   <item>Kuromoji:
///       Morphological analyzer for Japanese text.</item>
///   <item>Morfologik:
///       Dictionary-driven lemmatization for the Polish language.</item>
///   <item>Phonetic:
///       Analysis for indexing phonetic signatures (for sounds-alike search).</item>
///   <item>Smart Chinese:
///       Analyzer for Simplified Chinese, which indexes words.</item>
///   <item>Stempel:
///       Algorithmic Stemmer for the Polish Language.</item>
///   <item>UIMA:
///       Analysis integration with Apache UIMA.</item>
EN

回答 2

Stack Overflow用户

发布于 2017-06-01 15:45:50

我可以在VS2012中确认这个问题。必须更改regex以说明新行(([^\<]|\r\n)*?而不是[^\<]*?)。它在逐个替换项目时起作用,但当您想要替换所有项目时,则什么也不做。可能是个窃听器。

不过,这是可行的(不使用查找头和后面的查找):

查找:<item>(([^\<]|\r\n)*)

替换为:<item><description>$1</description>

票数 2
EN

Stack Overflow用户

发布于 2018-08-15 17:08:25

在Visual 2015中,我还遇到了这个问题(查找所有,替换所有不工作,但替换在给定文件中工作)。我在“选择”中执行了一个查找:我选择了我想要运行REGEX替换的文本,按下Ctrl +H来查找&替换工具,然后开始键入REGEX (此时Visual开始突出显示所选内容中的文本)。当我单击“替换全部”或“查找全部”时,没有找到任何结果,但我发现,如果我再次选择了文本,而查找和替换工具仍然打开,那么Find和Replace就会重新开始工作了!

这似乎是一个bug,因为在我编写REGEX时,文本已经被选中并被取消选中(尽管它不再具有通常选择的背景颜色,但与文件的其他部分相比,它仍然具有背景突出显示的颜色,以表明它仍然被选中,尽管Find & Replace看起来好像没有被选中一样!)。

我不知道这是否直接回答了你的问题,因为我不知道你用什么模式来“查找”,但如果是“选择”,那么这可能就是问题所在。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44306731

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档