使用正则表达式获取标签中的第一个单词

Posted

技术标签:

【中文标题】使用正则表达式获取标签中的第一个单词【英文标题】:Getting the First Word in a Tag With Regex 【发布时间】:2013-04-23 19:39:43 【问题描述】:

我正在尝试制作一个正则表达式来获取< ... > 标记中的第一个单词。我已经有一个可以获取标签中的所有单词。我正在使用它:

/<(.*?)>/

我的问题是,我可以吗?

【问题讨论】:

这是 html 吗?如果是这样,只需将其解析为文档片段并使用elem.tagName 这是一个使用正则表达式的解析器。 @user2228462,接受的解决方案是错误的。看看我的回答就知道为什么了。 @user2228462,很高兴我能帮上忙 ;) 【参考方案1】:

这是一个可行的解决方案:/&lt;([^&gt;\s]+)[^&gt;]*&gt;/

【讨论】:

【参考方案2】:

这样就可以了……

/<(.*?)\s/

【讨论】:

【参考方案3】:

在简单的情况下,/&lt;(\S+)/ 可能是您要查找的内容,或者您​​可能更正式,实际上只列出标签名称中允许的字符。

【讨论】:

【参考方案4】:
var tag = "< hello world>";
var regex = /<\s*(\S*)\b/;

if (match_arr = tag.match(regex)) 
  alert("yes:" +  match_arr[1]);

有什么方法可以获取标签中第一个单词之后的每个单词?

var tag = "< hello world goodbye >";
var regex = /<(.*?)>/;

if (match_arr = tag.match(regex)) 
  var str = match_arr[1].trim();
  var words = str.split(" ");
  console.log("-->" + words.slice(1).join(" ") + "<--");


--output:--
-->world goodbye<--

【讨论】:

其实,如果你的字符串已经只有一个标签,你可以使用正则表达式:/\b(\S*)\b/ with match()。 您必须定义“单词”的含义。 hello="world" 是一个词吗?还是那两个字?引号是单词的一部分吗?

以上是关于使用正则表达式获取标签中的第一个单词的主要内容,如果未能解决你的问题,请参考以下文章

如何使用正则表达式仅捕获具有特定格式的有效句子的第一个单词? [复制]

正确使用正则表达式提取单词

正则表达式仅获取php中的第一个字符[关闭]

正则表达式提取路径中的单词

您可以使用 Python 正则表达式从偏移量向后搜索吗?

如何使用javascript中的正则表达式在html标记中获取内容,包括标记?