如何在Ruby中匹配两个星号之间的换行符?我有这个字符串
Foo **bar**
test **hello
world** 12345
我只想找到
**hello
world**
我用\*{1,2}(.*)\n(.*)\*{1,2}
尝试过,但这匹配
**bar**
test **
我和\*{1,2}(.*?)\n(.*?)\*{1,2}
这样的非贪婪匹配者一起玩,但这也不起作用,所以我希望有人能提供帮助。
答案 0 :(得分:2)
您可以使用
/\*{1,2}\b([^*]*)\R([^*]*)\b\*{1,2}/
请参见Rubular demo
详细信息
\*{1,2}
-1或2个星号\b
-单词边界,下一个字符必须是单词char ([^*]*)
-第1组:*
之外的0个以上的字符\R
-换行序列([^*]*)
-第2组:除*
之外的任何0+个字符\b
-单词边界,前面的char必须是单词char \*{1,2}
-1或2个星号答案 1 :(得分:-1)
Wiktor已经给出了很好的答案。这是另一种方法:
(?<=\*{1,2})([^*])*(?=\*{1,2})
注意:这在Ruby中不起作用,但可以在其他一些语言中使用
中的链接后向子表达式必须为固定宽度。