实现微博中的‘@用户名’和‘#话题#’的正则表达式

【一】匹配 @用户名 
首先分析下微博中从哪里开始到哪里结束才是一个完整的用户名,按照常规的表现形式,一般是以@开头,以:结尾,中间为用户的名称。 
匹配表达式就可写为: @[^::]+ 
这是简单的写法,但是有些是在微博之后再@的,还有就是连续@的情况,还有些是以逗号等结束的,因此完善一下 
修改为: @[^,,::\s@]+ 
但是这些匹配都是从形式上进行了一个大概的归类,但是为了更为严谨,就要彻底分析其用户名的具体格式,例如新浪微博中的用户名格式为是“4-30个字符,支持英文、数字、"_"或减号” 
,也就是说,支持中文、字母、数字、下划线及减号,并且是4到30个字符(这里暂且认为汉字为一个字符)那么在写匹配的表达式的时候就可以这么来写: 
@[\u4e00-\u9fa5a-zA-Z0-9_-]{4,30} 
转换为php可用正则:
preg_match_all('/@([\\x{4e00}-\\x{9fa5}a-zA-Z0-9-_]{2,30})+/u', $content, $matches)
若需要带小数点:
'/@([\\x{4e00}-\\x{9fa5}a-zA-Z0-9-_\.]{2,30})+/u' 【二】匹配 #话题# 这个相对相对就简单了很多,前后都是#,以#号开始并以#结束 匹配表达式写为: #[
^#]+#

 

转载于:https://www.cnblogs.com/ygcool/p/8717391.html

评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符 “速评一下”
<div class="post-text" itemprop="text"> <p>I have an html page that has 1 textbox field for username and 5 checkboxes for that user to indicate which genres of music they like (ambient, rock, rap, jazz, pop). I duplicated the form fields twice more so that I can get the following data values: </p> <p>Tom<br> Ambient<br> Rock<br> Rap<br></p> <p>Sue<br> Rock<br> Rap<br> Jazz<br></p> <p>Betty<br> Rock <br> Rap<br> Jazz<br></p> <p>What is the best way to do a user matching algorithm in PHP? From the values about Sue and Betty would match 100% and Tom would match less than 100% with the other two. </p> <p>Any suggestions?</p> <p>below is the code</p> <pre><code><p>Put in your name and pick the music genres you like:</p> <form id="form1" name="form1" method="post" action=""> <table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr> <td width="12%"><label for="name"></label> <input type="text" name="name1" id="name1" vale="name1" placeholder="name 1"/></td> <td width="12%"><label for="name"></label> <input type="text" name="name2" id="name2" value="name2" placeholder="name 2"/></td> <td width="13%"><label for="name3"></label> <input type="text" name="name3" id="name3" value="name3" placeholder="name 3"/></td> </tr> <tr> <td><input type="checkbox" name="checkbox" id="checkbox" /> <label for="checkbox">Ambient</label></td> <td><input type="checkbox" name="checkbox" id="checkbox" /> <label for="checkbox">Ambient</label></td> <td><input type="checkbox" name="checkbox" id="checkbox" /> <label for="checkbox">Ambient</label></td> </tr> <tr> <td><input type="checkbox" name="Rock" id="Rock" value="Rock"/>Rock</td> <td><input type="checkbox" name="Rock" id="Rock" value="Rock"/> Rock</td> <td><input type="checkbox" name="Rock" id="Rock" value="Rock"/> Rock</td> </tr> <tr> <td><input type="checkbox" name="Rap" id="Rap" value="Rap"/>Rap</td> <td><input type="checkbox" name="Rap" id="Rap" value="Rap"/> Rap</td> <td><input type="checkbox" name="Rap" id="Rap" value="Rap"/> Rap</td> </tr> <tr> <td><input type="checkbox" name="Jazz" id="JAzz" value="Jazz" />Jazz</td> <td><input type="checkbox" name="Jazz" id="JAzz" value="Jazz" /> Jazz</td> <td><input type="checkbox" name="Jazz" id="JAzz" value="Jazz" /> Jazz</td> </tr> <tr> <td><input type="checkbox" name="Pop" id="Pop" value="Pop" />Pop</td> <td><input type="checkbox" name="Pop" id="Pop" value="Pop" /> Pop</td> <td><input type="checkbox" name="Pop" id="Pop" value="Pop" /> Pop</td> </tr> </table> <br /> <input type="submit" name="button" id="button" value="Submit" /> </form> </code></pre> </div>
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页