NEUOJ第1155题 Mysterious Organization —— 顺便训练一下“正则表达式”

  NEUOJ第1155题,MysterIoUs Organization题目链接)。

MysterIoUs Organization

Description

GFW had intercepted billions of illegal links successfully. It has much more effect. Today,GFW intercepted a message of a mysterIoUs organization. This mysterIoUs organization package the message in legitimate URL.

To find the Black Hand behind the scenes,GFW didn’t shield the IP. Instead,it chooses to tap the massage. Because the messages are packaged in URL,and encrypted by the way we don’t kNow,GFW chooses to monitor all the URL passed,to get enough information to find the Black Hand behind the scenes.

This kind of URL is easy to find. This kind of URL including the word’ manure’. Your task is to find how many URL is this kind.

Considering traveling in it,you are free to any cell containing a composite number or 1,but traveling to any cell containing a prime number is disallowed. You can travel up,down,left or right,but not diagonally. Write a program to find the length of the shortest path between pairs of nonprime numbers,or report it's impossible.

Input

Input has only one case,it has multiple lines. Each line has a string standing for the URL passing GFW. The length of the string is less than 256 without blank in it. There won’t be more than 256 lines in the cases.

Output

Output one line standing for the number of URL GFW needs.

Sample Input

https://61.135.169.105//manurer//whoistheboss
http://61.135.169.105//manur//whoistheboss
http://61.135.169.105//mare//whoistheboss
https://61.135.169.105//manure//Iamtheboss

Sample Output

2

Source

2012黑龙江省赛

  解题思路:纯粹的字符串匹配,没有任何难度。直接用C语言的strstr或者C++STL中的string::find就能搞定。

查看C语言strstr版源代码
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main (void)
{
    int count = 0;
    char URL[1000];
    while ( gets(URL) != NULL )
    {
        if (strstr(URL,"manure" ) )
            count ++;
    }
    printf( "%d\n",count );
    return EXIT_SUCCESS;
}
查看C++语言string::find版源代码
#include <iostream>
#include <cstdlib>
#include <string>

using namespace std;

int main (void)
{
    int count = 0;
    string URL;
    while ( cin >> URL )
    {
        if ( URL.find( "manure" ) != string::npos )
            count ++;
    }
    cout << count << endl;
    return EXIT_SUCCESS;
}

  当然,如果只因为这个发表解题报告,没有任何意义。我发表这篇解题报告的目的是训练一下“正则表达式”的使用。

  Java语言源代码如下:

import java.io.*;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Main
{
    public static void main ( String args[] )
    {
        String URL;
        int count = 0;
        Scanner cin = new Scanner(system.in);
        Pattern pattern = Pattern.compile(".*manure.*");
        while ( cin.hasNext())
        {
            URL = cin.nextLine();
            Matcher matcher = pattern.matcher(URL);
            if ( matcher.matches())
                count ++;
        }
        System.out.println( count );
    }
}

  以上代码用的是Java正则表达式。

  以下两个代码用的是GNU正则表达式,所以仅能用gcc/g++编译,用其它编译器会编译错误哦!

  C语言源代码如下:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <regex.h>

#define MAX_LENGTH 1000010

int main (void)
{
    char URL[1000];
    int count = 0;
    regex_t preg;
    regcomp( &preg,".*manure.*",0 );
    while ( gets(URL) != NULL )
    {
        if ( regexec( &preg,URL,0,NULL,0) == 0 )
            count ++;
    }
    printf( "%d\n",count );
    regfree( &preg );
    return EXIT_SUCCESS;
}

  C++语言源代码如下:

#include <iostream>
#include <cstdlib>
#include <string>
#include <regex.h>

using namespace std;

#define MAX_LENGTH 1000010

int main (void)
{
    int count = 0;
    regex_t preg;
    string URL;

    regcomp( &preg,0 );
    while ( cin >> URL )
    {
        if ( regexec( &preg,URL.c_str(),0) == 0 )
            count ++;
    }
    regfree( &preg );
    cout << count << endl;
    return EXIT_SUCCESS;
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


正则替换html代码中img标签的src值在开发富文本信息在移动端展示的项目中,难免会遇到后台返回的标签文本信息中img标签src属性按照相对或者绝对路径返回的形式,类似:<img src="qinhancity/v1.0.0/ima
正则表达式
AWK是一种处理文本文件的语言,是一个强大的文件分析工具。它是专门为文本处理设计的编程语言,也是行处理软件,通常用于扫描,过滤,统计汇总等工作,数据可以来自标准输入也可以是管道或文件。当读到第一行时,匹配条件,然后执行指定动作,在接着读取第二行数据处理,不会默认输出。如果没有定义匹配条件,则是默认匹配所有数据行,awk隐含循环,条件匹配多少次,动作就会执行多少次。逐行读取文本,默认以空格或tab键为分割符进行分割,将分割所得的各个字段,保存到内建变量中,并按模式或或条件执行编辑命令。与sed工作原理相比:s
正则表达式是特殊的字符序列,利用事先定义好的特定字符以及他们的组合组成了一个规则,然后检查一个字符串是否与这种规则匹配来实现对字符的过滤或匹配。我们刚才在学习正则表达式的时候,我们表示数字,字母下划线的时候是用w表示的,为什么我们在书写的时候用的是w?我们可以发现我们分割空格的话,并没有达到我们预期的效果,这里我们可以使用正则表达式的方式进行分割。我们可以发现,我们和上面得到的结果不一致,既然出错了,肯定是我们的使用方式不对。看到这里我们就能感受到正则表达式的作用了,正则表达式是字符串处理的有力工具。
Python界一名小学生,热心分享编程学习。
收集整理每周优质开发者内容,包括、、等方面。每周五定期发布,同步更新到和。欢迎大家投稿,,推荐或者自荐开源项目/资源/工具/文章~
本文涉及Shell函数,Shell中的echo、printf、test命令等。
常用正则表达,包括: 密码、 手机号、 身份证、 邮箱、 中文、 车牌号、 微信号、 日期 YYYY-MM-DD hh:mm:ss、 日期 YYY-MM-DD、 十六进制颜色、 邮政编号、 用户名、 QQ号
一、python【re】的用法1、re.match函数·单一匹配-推荐指数【★★】2、re.search函数·单一匹配-推荐指数【★★★★★】3、re.findall函数·多项匹配-推荐指数【★★★★★】4、re.finditer函数·多项匹配-推荐指数【★★★★】5、re.sub函数·替换函数-推荐指数【★★★★】二、正则表达式示例·总有一款适合你1、正则表达式匹配HTML指定id/class的标签2、正则表达式匹配HTML中所有a标签中的各类属性值3、获取标签的文本值
1.借助词法分析工具Flex或Lex完成(参考网络资源)2.输入:高级语言源代码(如helloworld.c)3.输出:以二元组表示的单词符号序列。通过设计、编制、调试一个具体的词法分析程序,加深对词法分析原理的理解,并掌握在对程序设计语言源程序进行扫描过程中将其分解为各类单词的词法分析方法。由于各种不同的高级程序语言中单词总体结构大致相同,基本上都可用一组正则表达式描述,所以构造这样的自动生成系统:只要给出某高级语言各类单词词法结构的一组正则表达式以及识别各类单词时词法分析程序应采取的语义动作,该系统
正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。例如:我们在写登录注册功能的时候使用的表单验证(对用户名、密码进行一些字符或长度进行限制) ===> (`匹配`) - 正则表达式还常用于过滤掉页面内容的一些敏感词汇。例如:我们平常在打游戏时候的口吐芬芳被换成了***:full_moon_with_face: ===> (`替换`) - 正则表达式从字符串中获取我们想要的特定部分。例如:我们在逛淘宝的时候在搜索框中搜索内容,会弹出很多与搜索相关的提示内容 ===> (`提取`) etc..
通过上面几个简单的示例,可以了解到常见的基础正则表达式的元字符主要包括以下几个^ 匹配输入字符串的开始位置。除非在方括号表达式中使用,表示不包含该字符集合。要匹配”^”字符本身,请使用"^"$ 匹配输入字符串的结尾位置。如果设置了RegExp对象的 Multiline属性,则"$”也匹配'n'或'r’,。要匹配”$"字符本身,请使用”$". 匹配除"rn"之外的任何单个字符 反斜杠,又叫转义字符,去除其后紧跟的元字符或通配符的特殊意义* 匹配前面的子表达式零次或多次。...
给出补充后描述 C 语言子集单词符号的正则文法,设计并实现其词法分析程序。
正则表达式(Regular Expression),又称规则表达式,它不是某个编程语言所特有的,是计算机科学的一个概念,通常被用来检索和替换符合某些规则的文本。
Python Re 正则表达式 数据匹配提取 基本使用
正则表达式:是用来描述字符串内容格式,使用它通常用于匹配一个字符串的内容是否符合格式要求
python的学习还是要多以练习为主,想要练习python的同学,推荐可以去牛客网看看,他们现在的IT题库内容很丰富,属于国内做的很好的了,而且是课程+刷题+面经+求职+讨论区分享,一站式求职学习网站,最最最重要的里面的资源全部免费!