Erinevus lehekülje "Itx8071-task1" redaktsioonide vahel

Allikas: Kursused
Mine navigeerimisribale Mine otsikasti
 
(ei näidata sama kasutaja 109 vahepealset redaktsiooni)
1. rida: 1. rida:
 
This homework assignment requires the knowledge from Module 3.
 
This homework assignment requires the knowledge from Module 3.
  
'''Please write a regular expression for matching the sequence of keyword-value pairs which follows these rules:'''
+
=== Please write a regular expression for matching the sequence of software module names and optional version numbers, so that the sequence will follow these rules: ===
  
1) The sequence consists of one or more elements. If there are two or more elements, they are separated with a comma (,) character.
+
* The sequence consists of one or more parts. If there are two or more parts, they are separated with a comma (",") character.
  
2) Each element of the sequence is a keyword-value pair, where keyword and value are separated with an equal sign (=) character. Each keyword must be a sequence of one or more letters, while each value is a sequence of zero or more characters which are not double quotes ("). If the value is either empty or contains one or more non-digits, the value must be enclosed in double quotes ("). For non-empty values that consist of digits only, the surrounding double quotes may be omitted. Here are examples of valid keyword-value pairs:
+
* Each part of the sequence is a software module name which is optionally followed by a version number. If the version number is present, there must be a dash ("-") character between the software module name and the version number. If there is no version number, the use of dash character after the software module name is not permitted.
  
''visitors=112''
+
* Software module name must contain at least one character and must begin with a letter, and may contain letters and digits only.
  
''temperature="12.3C"''
+
* The version number consists of one or more elements. If there are two or more version number elements, these elements must be separated with a dot (".") character. Note that the dot character may not appear before the first or after the last element. Each version number element must be a sequence of one or more digits which may be optionally followed by one letter.
  
''language="english"''
+
Please note that for accomplishing the task, '''one regular expression has to be submitted which is suitable for use with the egrep or pcre2grep tool'''. It is not acceptable to submit the solution in a fragmented way (e.g., several isolated expressions for addressing different parts of the task). Also, it is not allowed to submit programs in Java, Python, Perl (or any other language) for the solution. Finally, if the solution only works with the examples provided below but does NOT meet the task specification, it will be treated as incorrect.
  
''countries="US,UK,Germany,France"''
+
=== Examples of sequences the regular expression must match: ===
  
''age=26''
+
m4-1.4.16
 +
(the sequence has one valid part -- a software module name with a version number of 3 elements)
  
''origin=""''
+
coreutils,pcre-8.32
 +
(the sequence has two valid parts -- note that the first part does not have a version number)
  
''score="67.8"''
+
libtasn1-4.09a,GeoIP-1.5.0,iwl6000g2a
 +
(the sequence has three valid parts, with the first and second parts having version numbers)
  
Please note that for accomplishing the task, one regular expression has to be submitted which is suitable for use with the egrep or pcregrep tool. It is not acceptable to submit the solution in a fragmented way (e.g., several isolated expressions for addressing different parts of the task). Also, it is not allowed to submit programs in Java, Python, Perl (or any other language) for the solution.
+
iwl2030,a12bcd3456ef78gh,mydatabase-13i.222.5b,e2fsprogs,PyYAML
 +
(the sequence has five valid parts, where only the third part has a version number)
  
 +
=== Examples of sequences the regular expression must NOT match: ===
  
'''Examples of sequences the regular expression must match:'''
+
coreutils, pcre-8.32
 +
(the second part begins with a space character which is illegal)
  
''speed="60kmph"''  (the sequence has one valid element)
+
coreutils 8.22,pcre--8.32
 +
(the first part contains a space character which is illegal; also, in the second part the software module name and version number are separated by two dash characters which is illegal)  
  
''visitors=57,temp="36.4F",prefix="+372"''  (the sequence has three valid elements)
+
m4-1.4.16,
 +
(the first part ends with comma, but there is no following second part)  
  
''altitude="5000m",origin="",type="balloon",gas="oxygen",flammable="no",engines=0,heaters=1,crew=2''  (the sequence has eight valid elements)
+
my_db
 +
(the software module name contains an illegal character _)  
  
 +
mydb-11A3.1
 +
(the first version number element contains a character A, but A is not the last character of the version number element)
  
'''Examples of sequences the regular expression must NOT match:'''
+
mydb-11..2
 +
(version number contains two dots, but there is no version number element between them)
  
''speed="60kmph",''  (there is a comma after the first sequence element, but the second element is missing)
+
mydb-
 +
(software module name is followed by -, but there is no version number)  
  
''date=,visitors=1011''  (the first sequence element has a keyword but no value)
+
mydb-12ab.1
 +
(the first version number element ends with more than one letter which is illegal)
  
''date="Sep 10 2015",city=tallinn,visitors=1011''  (the second sequence element has a non-numerical value, but it is not enclosed in double quotes)
+
mydb,,mydaemon
 +
(the second part of the sequence is empty)  
  
''speed="60kmph",,type="car"''  (the second sequence element is missing)
+
!"libtasn1-4.09a,GeoIP-1.5.0,iwl6000g2a
 +
(the sequence begins with illegal characters)  
  
''speed="60kmph",type="car",manufacturer=honda"''  (the third sequence element has a non-numerical value, but one of the enclosing double quotes is missing)
+
coreutils-8.22,pcre-8.32+%
 
+
(the sequence ends with illegal characters)
''speed2="60kmph",type="car",manufacturer="honda"''  (the first sequence element has a keyword which contains illegal character 2)
 
 
 
''date="Sep 10 2015",="tallinn",visitors=1011''  (the second sequence element does not have a keyword)
 
 
 
''visitors=57,temp="36.4F", prefix="+372"''  (there is an illegal space character after the second separating comma)
 
 
 
''speed=60 ,gear=4''  (there is an illegal space character before the first separating comma)
 

Viimane redaktsioon: 22. september 2025, kell 09:18

This homework assignment requires the knowledge from Module 3.

Please write a regular expression for matching the sequence of software module names and optional version numbers, so that the sequence will follow these rules:

  • The sequence consists of one or more parts. If there are two or more parts, they are separated with a comma (",") character.
  • Each part of the sequence is a software module name which is optionally followed by a version number. If the version number is present, there must be a dash ("-") character between the software module name and the version number. If there is no version number, the use of dash character after the software module name is not permitted.
  • Software module name must contain at least one character and must begin with a letter, and may contain letters and digits only.
  • The version number consists of one or more elements. If there are two or more version number elements, these elements must be separated with a dot (".") character. Note that the dot character may not appear before the first or after the last element. Each version number element must be a sequence of one or more digits which may be optionally followed by one letter.

Please note that for accomplishing the task, one regular expression has to be submitted which is suitable for use with the egrep or pcre2grep tool. It is not acceptable to submit the solution in a fragmented way (e.g., several isolated expressions for addressing different parts of the task). Also, it is not allowed to submit programs in Java, Python, Perl (or any other language) for the solution. Finally, if the solution only works with the examples provided below but does NOT meet the task specification, it will be treated as incorrect.

Examples of sequences the regular expression must match:

m4-1.4.16

(the sequence has one valid part -- a software module name with a version number of 3 elements)

coreutils,pcre-8.32

(the sequence has two valid parts -- note that the first part does not have a version number)

libtasn1-4.09a,GeoIP-1.5.0,iwl6000g2a

(the sequence has three valid parts, with the first and second parts having version numbers)

iwl2030,a12bcd3456ef78gh,mydatabase-13i.222.5b,e2fsprogs,PyYAML

(the sequence has five valid parts, where only the third part has a version number)

Examples of sequences the regular expression must NOT match:

coreutils, pcre-8.32

(the second part begins with a space character which is illegal)

coreutils 8.22,pcre--8.32

(the first part contains a space character which is illegal; also, in the second part the software module name and version number are separated by two dash characters which is illegal)

m4-1.4.16,

(the first part ends with comma, but there is no following second part)

my_db

(the software module name contains an illegal character _)

mydb-11A3.1

(the first version number element contains a character A, but A is not the last character of the version number element)

mydb-11..2

(version number contains two dots, but there is no version number element between them)

mydb-

(software module name is followed by -, but there is no version number)

mydb-12ab.1

(the first version number element ends with more than one letter which is illegal)

mydb,,mydaemon

(the second part of the sequence is empty)

!"libtasn1-4.09a,GeoIP-1.5.0,iwl6000g2a

(the sequence begins with illegal characters)

coreutils-8.22,pcre-8.32+%

(the sequence ends with illegal characters)