【发布时间】:2011-12-10 10:59:53
【问题描述】:
这是我的正则表达式。我在使用 Ruby,如果我没记错的话,它使用 POSIX 正则表达式。
regex = /(?:\n^)(\*[\w+ ?]+\*)\n/
这是我的目标:我想用 *delimited by asterisks* 的正则表达式拆分一个字符串,包括那些星号。 然而:如果匹配以换行符 (\n) 开头,或者它是整个字符串的开头,我只想按匹配进行拆分。这是我正在使用的字符串。
"*Friday*\nDo not *break here*\n*But break here*\nBut again, not this"
我的正则表达式在 *Friday* 匹配时没有正确拆分,但它在在 *But break here* 匹配时拆分(它也抛出了 here 拆分)。我的问题在第一组中的某个地方,我认为:(?:\n^) — 我知道这是错误的,但我并不完全确定正确的写法。有人可以阐明一下吗?这是我的完整代码。
regex = /(?:\n^)(\*[\w+ ?]+\*)\n/
str = "*Friday*\nDo not *break here*\n*But break here*\nBut again, not this"
str.split(regex)
结果如下:
>>> ["*Friday*\nDo not *break here*", "*But break here*", "But again, not this"]
我希望它是这样的:
>>> ["*Friday*", "Do not *break here*", "*But break here*", "But again, not this"]
编辑#1:我已经更新了我的正则表达式和结果。 (2011/10/18 16:26 CST)
编辑#2:我再次更新了这两个。 (中部标准时间 16:32)
【问题讨论】:
-
你的字符串是这样的吗?还是实际的 \n 是不同的行?
-
换行符确实在字符串中。
标签: ruby regex string pattern-matching