我试图使用正则表达式从字符串中提取*
包围的单词,例如字符串*sample*
,我要提取sample
,但我是无法正确的正则表达式。
我尝试了以下正则表达式[*]{1}.*[*]{1}, ^[*]{1}.*[*]{1}$?
,但它无效。
答案 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
现在,如果你不想“提取”*
,你可以这样做:
(?:\*)([^*]*)(?:\*)
这将仅将文本放入捕获组(( )
部分)并将*
放入非捕获组((?: )
部分)