我有一堆markdown文件,我想在其中搜索Ruby的双冒号::
,而不是某些代码格式(例如,我忘记应用正确的markdown的地方)。例如
`foo::bar`
hello `foo::bar` test
` example::with::whitespace `
Proper::Formatted
Module::WithIndendation
Some::Nested::Modules
```ruby
CodeBlock::WithSyntax
Some::Class
Another::Class Heading
some text
正则表达式应该只与`Some::Class`和`Another::Class`匹配,因为它们缺少周围的反引号,而且也不在多行代码栅栏块内。
我有这个正则表达式,但它也与多行块匹配
[s]+[^]+(::)[^
]+[s]?
有什么想法,如何排除这一点?
编辑:如果正则表达式可以在Ruby、JS和`grep`的命令行中工作,那就太好了。
1条答案
按热度按时间8mmmxcuj1#
对于原始输入,您可以在Ruby中使用此正则表达式来匹配
::
字符串1.前面没有
和 1.前面没有
,后面跟一个空格:Regex:
RegEx Demo 1
RegEx分手:
(?<!
\s): Negative lookbehind to assert that <code>
和空格不在前面的位置(?<!
): Negative lookbehind to assert that <code>
不在前面的位置\b
:匹配单词边界\w+
:匹配1+个单词字符::
:匹配::
\w+
:匹配1+个单词字符您可以在Java脚本中使用此正则表达式:
RegEx Demo 2
对于
gnu-grep
,请考虑以下命令:RegEx Demo 3