/^Hel{2}o\s*World\n$/

Slides:



Advertisements
Similar presentations
Test-Driven Development Learn the "Test First" Approach to Coding SoftUni Team Technical Trainers Software University
Advertisements

Regular Expressions /^Hel{2}o\s*World\n$/ SoftUni Team Technical Trainers Software University
Mocking with Moq Tools for Easier Unit Testing SoftUni Team Technical Trainers Software University
Regular Expressions /^Hel{2}o\s*World\n$/ SoftUni Team Technical Trainers Software University
Sets, Dictionaries SoftUni Team Technical Trainers Software University
Stacks and Queues Processing Sequences of Elements SoftUni Team Technical Trainers Software University
Generics SoftUni Team Technical Trainers Software University
Strings and Text Processing
Version Control Systems
Auto Mapping Objects SoftUni Team Database Applications
Static Members and Namespaces
Functional Programming
Databases basics Course Introduction SoftUni Team Databases basics
Sets, Hash table, Dictionaries
C# Basic Syntax, Visual Studio, Console Input / Output
Interface Segregation / Dependency Inversion
Data Structures Course Overview SoftUni Team Data Structures
Introduction to MVC SoftUni Team Introduction to MVC
PHP MVC Frameworks Course Introduction SoftUni Team Technical Trainers
Reflection SoftUni Team Technical Trainers Java OOP Advanced
C# Database Fundamentals with Microsoft SQL Server
/^Hel{2}o\s*World\n$/
Classes, Properties, Constructors, Objects, Namespaces
Mocking tools for easier unit testing
PHP MVC Frameworks MVC Fundamentals SoftUni Team Technical Trainers
C# Databases Advanced with Microsoft SQL Server
Processing Sequences of Elements
/^Hel{2}o\s*World\n$/
EF Relations Object Composition
Entity Framework: Code First
Repeating Code Multiple Times
Data Definition and Data Types
Databases advanced Course Introduction SoftUni Team Databases advanced
Install and configure theme
Balancing Binary Search Trees, Rotations
Debugging and Troubleshooting Code
Entity Framework: Relations
Fast String Manipulation
Array and List Algorithms
Functional Programming
ASP.NET Razor Engine SoftUni Team ASP.NET MVC Introduction
Processing Variable-Length Sequences of Elements
Regular Expressions (RegEx)
C# Advanced Course Introduction SoftUni Team C# Technical Trainers
Databases Advanced Course Introduction SoftUni Team Databases Advanced
Combining Data Structures
Best practices and architecture
Arrays and Multidimensional Arrays
Built-in Functions. Usage of Wildcards
Multidimensional Arrays, Sets, Dictionaries
Extending functionality using Collections
Making big SPA applications
Language Comparison Java, C#, PHP and JS SoftUni Team
Functional Programming
ASP.NET Razor Engine SoftUni Team ASP.NET MVC Introduction
C# Advanced Course Introduction SoftUni Team C# Technical Trainers
Exporting and Importing Data
CSS Transitions and Animations
Train the Trainers Course
Iterators and Comparators
Spring Data Advanced Querying
Processing and Manipulating Text
Software Quality Assurance
Version Control Systems
JavaScript Frameworks & AngularJS
Polymorphism, Interfaces, Abstract Classes
Text Processing and Regex API
CSS Transitions and Animations
Iterators and Generators
Multidimensional Arrays
Presentation transcript:

/^Hel{2}o\s*World\n$/ Regular Expressions /^Hel{2}o\s*World\n$/ Advanced Java SoftUni Team Technical Trainers Software University http://softuni.bg © Software University Foundation – http://softuni.org This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike license.

Table of Contents Regular Expressions Regular Expressions in Java Characters Operators Constructs Regular Expressions in Java Helpful Resources © Software University Foundation – http://softuni.org This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike license.

Questions sli.do #6772 © Software University Foundation – http://softuni.org This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike license.

Character Classes [nvj] matches any character that is either n, v or j [^abc] – matches any character that is not a, b or c [0-9] - Character range: Мatches any digit frm 0 to 9 node.js v0.12.2 Abraham Lincoln In 1519 Leonardo da Vinci died at the age of 67.

Character Classes (2) \w – Matches any word character (a-z, A-Z, 0-9, _) \W – Matches any non-word character (the opposite of \w) \s – Matches any white-space character \S – Matches any non-white-space character (opposite of \s) \d – Matches any decimal digit aBcd 09_ &*^ Ю-Я aBcd 09_ &*^ Ю-Я \w – Matches any word character (a-z, A-Z, 0-9, _) \W – Matches any non-word character (the opposite of \w) \s – Matches any white-space character \S – Matches any non-white-space character (opposite of \s) \d – Matches any decimal digit \D – Matches any non-digit character (opposite of \d) © Software University Foundation – http://softuni.org This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike license.

Quantifiers * - Matches the previous element zero or more times + - Matches the previous element one or more times ? - Matches the previous element zero or one time +359885976002 + \+\d* => +359885976002 + \+\d+ => \+\d? => +359885976002 +

Character Escapes Sometimes you will need to look for special characters like new lines or tabulations Then we have a new line This is a “tab” Name: Peter Phone: +359882042353 We can use character escapes in our RegEx like that: Name:\t\w+\nPhone:\s*\+\d+

Anchors ^ - The match must start at the beginning of the string or line $ - The match must occur at the end of the string or before \n Example – username validation pattern: Note: Test one by one, $ asserts string end ^\w{6,12}$ jeff_butt short johnny too_long_username !lleg@l_ch@rs

Names the captured group 'month' Grouping Constructs (subexpression) - captures the matched subexpression and assigns it a number (?<name>subexpression) - Captures the matched subexpression into a named group \d{2}-(\w{3})-\d{4} => 22-Jan-2015 X` \d{2}-(?<month>\w{3})-\d{4} => 22-Jan-2015 Names the captured group 'month'

Grouping Constructs (2) (?:subexpression) – Defines a non-capturing group ^(?:Hi|hello),\s*(\w+)$ => Hi, Peter Non capturing groups are necessary when you want to exclude alternations captured as a group. © Software University Foundation – http://softuni.org This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike license.

Backreference Constructs

Backreference Constructs \number – matches the value of a numbered subexpression \k<name> – matches the value of a named expression 22-12-2015 05/08/2016 \d{2}(-|\/)\d{2}\1\d{4} => 22-12-2015 05/08/2016 \d{2}(?<del>-|\/)\d{2}\k<del>\d{4} =>

Playing with RegEx Exercises in class

Using Built-In Regex Classes Regular Expressions Using Built-In Regex Classes

Regex Java supports a built-in regular expression classes java.util.regex.Pattern java.util.regex.Matcher Pattern pattern = Pattern.compile("a*b"); Matcher matcher = pattern.matcher("aaaab"); boolean match = matcher.find();

Validating String By Pattern Pattern.matches(String pattern, String text) – determines whether the text matches the pattern String text = "Today is 2015-05-11"; String pattern = "\\d{4}-\\d{2}-\\d{2}"; bool containsValidDate = Pattern.matches(pattern, text); System.out.print(containsValidDate); // true

Checking for a Single Match find() – gets the first match that corresponds to the pattern String text = "Nakov: 123"; String pattern = "([A-Z][a-z]+): (\\d+)"; Pattern regex = Pattern.compile(pattern); Matcher matcher = regex.matcher(text); matcher.find(); System.out.println(matcher.groupCount()); // 2 System.out.println("Matched text: " + matcher.group(0)); System.out.println("Name: " + matcher.group(1)); // Nakov System.out.println("Number: " + matcher.group(2)); // 123

Replacing With Regex replaceAll(String replacement) – replaces all strings that match the pattern with the provided replacement String text = "Nakov: 123, Branson: 456"; String pattern = "\\d{3}"; String replacement = "999"; Pattern regex = Pattern.compile(pattern); Matcher matcher = regex.matcher(text); String result = matcher.replaceAll(replacement); System.out.println(result); // Nakov: 999, Branson: 999

Splitting With Regex split(String pattern) – splits the text by the pattern Returns String[] String text = "1 2 3 4"; String pattern = "\\s+"; String[] results = text.split(pattern); System.out.print(String.join(", ", results)); // 1, 2, 3, 4

Built-in RegEx Exercises in class

* Helpful Resources https://regex101.com and http://regexr.com – websites to test Regex using different programming languages http://docs.oracle.com/javase/7/docs/api/java/util/regex/Matcher – a quick reference for Regex from Oracle http://regexone.com – interactive tutorials for Regex http://www.regular-expressions.info/tutorial.html – a comprehensive tutorial on regular expressions (c) 2007 National Academy for Software Development - http://academy.devbg.org. All rights reserved. Unauthorized copying or re-distribution is strictly prohibited.*

Summary Regular expressions describe patterns for * Summary Regular expressions describe patterns for searching through text Define special characters, operators and constructs for building complex patterns Powerful tool for extracting specific data from text or validating strings (e.g. email/username validator) Java provides a built-in Regex classes Supports matching, validating, splitting and replacing strings by a pattern (c) 2007 National Academy for Software Development - http://academy.devbg.org. All rights reserved. Unauthorized copying or re-distribution is strictly prohibited.*

Regular Expressions https://softuni.bg/trainings/1377/advanced-java-may-2016 © Software University Foundation – http://softuni.org This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike license.

License This course (slides, examples, demos, videos, homework, etc.) is licensed under the "Creative Commons Attribution- NonCommercial-ShareAlike 4.0 International" license Attribution: this work may contain portions from "C# Fundamentals – Part 1" course by Telerik Academy under CC-BY-NC-SA license "C# Fundamentals – Part 2" course by Telerik Academy under CC-BY-NC-SA license © Software University Foundation – http://softuni.org This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike license.

Free Trainings @ Software University Software University Foundation – softuni.org Software University – High-Quality Education, Profession and Job for Software Developers softuni.bg Software University @ Facebook facebook.com/SoftwareUniversity Software University @ YouTube youtube.com/SoftwareUniversity Software University Forums – forum.softuni.bg © Software University Foundation – http://softuni.org This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike license.