0

我有

^\s*(\w+(\,\w+)*\s*(:|,|\()(\(|\[)?\s*)

从这样的两组字符串中提取“命令”效果很好

**Strict pattern**
command:some text
command: some text
command,command2: some text

**Loose pattern**
command :some text
command( some text )
command, some txt

这是我的问题更清晰的链接。 http://rubular.com/r/epTIiU32Dj

您能否为严格模式和丢失模式编写两个单独的正则表达式?

因此,使用一个 RegExp,我只会得到严格模式命令,而使用其他 RegExp,我只会得到失去模式命令。

每当我尝试某事时,我最终都会超越彼此的模式。我无法为每种模式获得有效的正则表达式。

4

1 回答 1

1

首先,您可以通过使用字符类而不是组和交替(http://www.rubular.com/r/pI7dk7qzxS)来缩短您的正则表达式:

^\s*(\w+(,\w+)*\s*[:,(\[]\s*)


这是严格的模式(http://www.rubular.com/r/xRIQuAR6TM):

^\s*(\w+(,\w+)*:\s*)


这是松散的模式(http://www.rubular.com/r/9ztWBYsj1a):

^\s*(\w+(,\w+)*(\s+:|\s*[,(\[]\s+)\s*)

请注意,这些适用于您提供的示例数据(如您在 Rubular 链接中所见),但如果您遇到问题,仅从示例数据和您的正则表达式中很难判断这是否涵盖所有潜在情况将需要更彻底地解释语法。

于 2012-04-10T16:57:59.203 回答