2

考虑以下字符串,它是一个目录

Table of Content

Name abc  ......... 20
Name fghkjkj kjkj . 31
Name.with.dot ..... 45

我想提取部分的名称' Name abc'' Name fghkjkj kjkj'和' Name.with.dot'

我还没有找到实现该目标的正确正则表达式,有什么见解吗?

4

3 回答 3

5

我认为以下应该有效:

^.*?(?= \.+ \d+$)

假设您正在逐行工作或MULTILINE启用了模式。肯定的前瞻断言确保我们在只有点和数字后立即结束匹配。

解释:

^      # Start of line
.*?    # Match any number of characters, as few as possible
(?=    # Look ahead to assert that the following matches from here:
 [ ]   # a space
 \.+   # one or more dots
 [ ]   # a space
 \d+   # a number
 $     # End of line
)      # End of lookahead
于 2013-07-11T10:45:09.257 回答
4

这种基于正则前瞻的正则表达式应该可以工作:

^.+?(?= +\.+ +\d+$)

现场演示:http ://www.rubular.com/r/B5EdXF3SIz

于 2013-07-11T10:47:43.580 回答
3

这可以解决问题:

^Name[ .]\w+(?:[. ]\w+)?

解释:

^     # Start of string
Name  # Literal string 'Name'
[ .]  # Space or period
\w+   # One or more word characters
(?:   # Start non-capturing group
[ .]  # Space or period
\w+   # One or more word characters
)     # Close noo-capturing group
?     # Make previous group optional

现场演示在这里

于 2013-07-11T10:49:09.393 回答