使用正则表达式提取特定单词

时间:2011-10-23 06:42:40

标签: regex

我试图使用正则表达式从字符串中提取*包围的单词,例如字符串*sample*,我要提取sample,但我是无法正确的正则表达式。

我尝试了以下正则表达式[*]{1}.*[*]{1}, ^[*]{1}.*[*]{1}$?,但它无效。

4 个答案:

答案 0 :(得分:1)

采用以下示例:

this is a *sample* string, but not *really*

以下内容将匹配第一个捕获组中的sample* string, but not *really

\*(.*)\*

虽然以下内容将sample与第一个捕获的组匹配:

\*([^*]*)\*

答案 1 :(得分:0)

你可以试试这个正则表达式

(?<=\*).*(?=\*)

如果您的编程语言支持lookbehind和lookahead。如果你想在两个*之间匹配最小可能的文本,那么你可以选择像这样的惰性量词

(?<=\*).*?(?=\*)

答案 2 :(得分:0)

第一个对我来说很好。你可以在括号中添加一个捕获组:

[*]{1}(.*)[*]{1}

然而,这非常冗长。你可以这样做:

\*(.*)\*

你用\来逃避*因为它是一个特殊的角色。

答案 3 :(得分:0)

试试这个:

\*[^*]*\*

这意味着\*:*,[^*]*? 0或更多非*,\*:*

http://gskinner.com/RegExr?2v0e4

现在,如果你不想“提取”*,你可以这样做:

(?:\*)([^*]*)(?:\*)

这将仅将文本放入捕获组(( )部分)并将*放入非捕获组((?: )部分)