Get IP address of a site from a specific NameServer

It sometimes happen that you have created a domain in your hosting account and did not point the NS record of the domain to the hosting providers NameServer. So if you want to connect to the server through SSH you don’t have the IP address. To find out the IP address you will have to ping the NameServer of the Hosting provider only. So here is a tool that allows you to do that.

http://www.kloth.net/services/dig.php

Uncategorized

Updating the link description cached in facebook.

Whenever a link is shared in facebook the description of the page is cached by facebook and the same description is used every time the link is shared again. The problem is, if you change the description of the page in your site and want that change to come in the description of the link you want to share it won’t happen because a cache of the old description is stored with facebook.

Solution is use this tool to see the stats of the link and also update the old cached data.

http://developers.facebook.com/tools/lint/

Uncategorized

Claiming your Google Apps Account

Today I bought a domain and when I was configuring Google Apps with it, I found that the Account was already take.

My question was How can it happen? . The only answer I can think of is that the domain was owned by someone else before I bought it and he must have signed-up for the Google apps service.

So how do I get access to the apps account?

  1. Reset the admin password using this link. http://www.google.com/support/a/bin/answer.py?hl=en&answer=143296#password This will take 48 Hrs to complete.
  2. After getting the admin password. Reset other email IDs and passwords.

Hope this post is helpful.

Uncategorized

Evergreen Godaddy Discount Coupons

OYH10 – $2.50 off / $7.49 any .COM (renewals too)-(28.25% off from $10.69)

BTPS101 – 20% any order of $50 or more

BTPS111 – 10% off anything

BTPS255 – 25% off $100 or more

OYH8 – 10% off whatever

OYH9 – $5 off a $30 purchase

OYH20H1 – 20% off hosting

chill8 – 10% off

chill9 – $5 off $30

chill10 – $7.49 .coms

hash8 – 10% off

hash9 – $5 off $30

hash10 – $7.49 .com registration

gdd1101c – 10% off any order of $40 or more

IAPtdom1 – $7.49 Domains

IAPth1 – 20% off Hosting

promo10 – 10% off your entire order

promo15 – Save 15% on your order of $75 or more

promo20 - 20% off shared hosting (minimum 12 months)

promo530 -Save $5 off any order of $30 or more

promo749 - Save $3 on .com registrations, transfers and renewals

promossl -$12.99 standard SSL certificates (normally $29.95)

For better understanding I have categorized it with offers

Domain Purchase

$7.49 .com registration
OYH10 – $2.50 off / $7.49 any .COM (renewals too)-(28.25% off from $10.69)
hash10 -  $7.49 .com registration
IAPtdom1 – $7.49 .com registration
chill10 – $7.49 .com registration

BTPS255 – 25% any order of $100 or more

BTPS101 – 20% any order of $50 or more

Save $5 off any order of $30 or more (Maximum  %16)
OYH9 – Save $5 off any order of $30 or more
chill9 – Save $5 off any order of $30 or more
hash9 – Save $5 off any order of $30 or more
promo530 -Save $5 off any order of $30 or more

10% off your entire order
BTPS111 – 10% off your entire order
OYH8 – 10% off your entire order
chill8 – 10% off your entire order
hash8 – 10% off your entire order
promo10 – 10% off your entire order

Hosting

20% off shared hosting
OYH20H1 – 20% off hosting
IAPth1 – 20% off Hosting
promo20 – 20% off shared hosting (minimum 12 months)

Other

promo749 – Save $3 on .com registrations, transfers and renewals

promossl -$12.99 standard SSL certificates (normally $29.95)

Uncategorized

Social Media Revolution

Social Media Revolution: Is social media a fad?
Or is it the biggest shift since the Industrial Revolution? This video details out social media facts and figures that are hard to ignore. This video is produced by the author of Socialnomics –
Erik Qualman in 2009.

Just watch the video, you will be thrilled.

Uncategorized

Ended my search for a good hosting service.

I have been searching for a good hosting service for the  last few weeks and now it has ended. I found DeamHost , it stands what its name is: its truly dream host.

My requirements were.

  1. Unlimited Space.
  2. Unlimited bandwidth.
  3. No limit on add-on domains.
  4. Should have SVN Client. (as most of our projects are in SVN).
  5. SSH access.
  6. Good Support.
  7. No problem with permission.
  8. Value for money.

But with Dream Host I get all the above features plus:

  1. SEO Hosting (You get Different IPs whenever you create a new domain so almost all your domains have different IPs sometimes even different C class IPs ).
  2. Amazing Control Panel (They have put in all the features you ever dreamt of, you get a feeling that you don’t need any support you can do every thing your self.)
  3. Quick Chat Support. (Just click and chat you have all the solutions to your problem.)
  4. I asked for SVN Client, they have the SVN server also, now I don’t need another service that I was using to create and I can track the project in SVN.
  5. Great knowledge base (wiki) explaining concept and solution for troubleshooting.

The normal hosting charge is $8.95/mo! . And there are different plans also.

But if you follow this link the charges will go down to $1.87$8.95/mo! (This is if you take a 1 year plan).

Uncategorized

Debugging SMTP

Telnet – SMTP Commands (sending mail using telnet)

In order to access your mailbox you will need 3 things: An active internet connection (an embarrasing stage to miss sometimes!)

The address of a mail server capable of relaying for you – usually provided by your dialup provider (e.g. mail.domain.ext)

A valid email address (e.g. mail@domain.ext)

The first thing to do is to open a connection from your computer to your mail server. telnet mail.domain.ext 25

You should receive a reply like: Trying ???.???.???.???… Connected to mail.domain.ext. Escape character is ‘^]’. 220 mail.domain.ext ESMTP Sendmail ?version-number?; ?date+time+gmtoffset?

You will then need to delcare where you are sending the email from: HELO local.domain.name

- dont worry too much about your local domain name although you really should use your exact fully qualified domain name as seen by the outside world the mail server has no choice but to take your word for it as of RFC822-RFC1123. This should give you: 250 mail.domain.ext Hello local.domain.name [loc.al.i.p], pleased to meet you

Now give your email address: MAIL FROM: mail@domain.ext

Should yeild: 250 2.1.0 mail@domain.ext… Sender ok

If it doesn’t please see possible problems. Now give the recipients address: RCPT TO: mail@otherdomain.ext

Should yeild: 250 2.1.0 mail@otherdomain.ext… Recipient ok

If it doesn’t please see possible problems. To start composing the message issue the command DATA

If you want a subject for your email type Subject:-type subject here-

then press enter twice (these are needed to conform to RFC 882) You may now proceed to type the body of your message (e.g. hello mail@otherdomain.ext from mail@domain.ext

) To tell the mail server that you have completed the message enter a single “.

” on a line on it’s own. The mail server should reply with: 250 2.0.0 ???????? Message accepted for delivery

You can close the connection by issuing the QUIT

command. The mailserver should reply with something like:221 2.0.0 mail.domain.ext closing connection Connection closed by foreign host.

Here are a list of problems I’ve encountered and their fixes

503 Need MAIL before RCPT

A recipient has been specified before a sender. 550 mail@domain.ext… Relaying Denied

The mail server has refused to relay mail for you, this may be for any number of reasons but typical resons include: Not using this provider for an internet connection and/or Not using an email address provided by the owner of the server. Some things to watch out for: 1. If you type too quickly, sometimes it won’t recognise your text (weird!) 2. The backspace key sometimes does not work with some telnet clients (even though it may seem as though it does) I’ll be putting more as and when I get them and figure out how to fix each problem.

Uncategorized

Mysql database replication

Slave:
1. mysql -u root -p
start slave;
show slave status\G;
Stop Slave io_thread;

Master:
mysql -u root -p
show master status;

mysql>change master to  master_log_file=’mysql-bin.000002′, master_log_pos=684608641;
mysql>start slave;
reset slave;

FLUSH TABLES WITH READ LOCK;
UNLOCK TABLES
Now it will get updates,

rsync -azpSv -e ‘ssh -p 99′ root@10.3.1.51:/gt/fsrvthis/mysqldata .

Linux, MySQL

Linux Cheat Sheet

Command Description
apropos whatis Show commands pertinent to string. See also threadsafe
man -t man | ps2pdf – > man.pdf make a pdf of a manual page
which command Show full path name of command
time command See how long a command takes
time cat Start stopwatch. Ctrl-d to stop. See also sw
nice info Run a low priority command (The “info” reader in this case)
renice 19 -p $$ Make shell (script) low priority. Use for non interactive tasks
dir navigation
cd - Go to previous directory
cd Go to $HOME directory
(cd dir && command) Go to dir, execute command and return to current dir
pushd . Put current dir on stack so you can popd back to it
alias l=’ls -l –color=auto’ quick dir listing
ls -lrt List files by date. See also newest and find_mm_yyyy
ls /usr/bin | pr -T9 -W$COLUMNS Print in 9 columns to width of terminal
find -name ‘*.[ch]‘ | xargs grep -E ‘expr’ Search ‘expr’ in this dir and below. See also findrepo
find -type f -print0 | xargs -r0 grep -F ‘example’ Search all regular files for ‘example’ in this dir and below
find -maxdepth 1 -type f | xargs grep -F ‘example’ Search all regular files for ‘example’ in this dir
find -maxdepth 1 -type d | while read dir; do echo $dir; echo cmd2; done Process each item with multiple commands (in while loop)
find -type f ! -perm -444 Find files not readable by all (useful for web site)
find -type d ! -perm -111 Find dirs not accessible by all (useful for web site)
locate -r ‘file[^/]*\.txt’ Search cached index for names. This re is like glob *file*.txt
look reference Quickly search (sorted) dictionary for prefix
grep –color reference /usr/share/dict/words Highlight occurances of regular expression in dictionary
archives and compression
gpg -c file Encrypt file
gpg file.gpg Decrypt file
tar -c dir/ | bzip2 > dir.tar.bz2 Make compressed archive of dir/
bzip2 -dc dir.tar.bz2 | tar -x Extract archive (use gzip instead of bzip2 for tar.gz files)
tar -c dir/ | gzip | gpg -c | ssh user@remote ‘dd of=dir.tar.gz.gpg’ Make encrypted archive of dir/ on remote machine
find dir/ -name ‘*.txt’ | tar -c –files-from=- | bzip2 > dir_txt.tar.bz2 Make archive of subset of dir/ and below
find dir/ -name ‘*.txt’ | xargs cp -a –target-directory=dir_txt/ –parents Make copy of subset of dir/ and below
( tar -c /dir/to/copy ) | ( cd /where/to/ && tar -x -p ) Copy (with permissions) copy/ dir to /where/to/ dir
( cd /dir/to/copy && tar -c . ) | ( cd /where/to/ && tar -x -p ) Copy (with permissions) contents of copy/ dir to /where/to/
( tar -c /dir/to/copy ) | ssh -C user@remote ‘cd /where/to/ && tar -x -p’ Copy (with permissions) copy/ dir to remote:/where/to/ dir
dd bs=1M if=/dev/sda | gzip | ssh user@remote ‘dd of=sda.gz’ Backup harddisk to remote machine
rsync (Network efficient file copier: Use the –dry-run option for testing)
rsync -P rsync://rsync.server.com/path/to/file file Only get diffs. Do multiple times for troublesome downloads
rsync –bwlimit=1000 fromfile tofile Locally copy with rate limit. It’s like nice for I/O
rsync -az -e ssh –delete ~/public_html/ remote.com:’~/public_html’ Mirror web site (using compression and encryption)
rsync -auz -e ssh remote:/dir/ . && rsync -auz -e ssh . remote:/dir/ Synchronize current directory with remote one
ssh (Secure SHell)
ssh $USER@$HOST command Run command on $HOST as $USER (default command=shell)
ssh -f -Y $USER@$HOSTNAME xeyes Run GUI command on $HOSTNAME as $USER
scp -p -r $USER@$HOST: file dir/ Copy with permissions to $USER’s home directory on $HOST
ssh -g -L 8080:localhost:80 root@$HOST Forward connections to $HOSTNAME:8080 out to $HOST:80
ssh -R 1434:imap:143 root@$HOST Forward connections from $HOST:1434 in to imap:143
wget (multi purpose download tool)
(cd dir/ && wget -nd -pHEKk http://www.pixelbeat.org/cmdline.html) Store local browsable version of a page to the current dir
wget -c http://www.example.com/large.file Continue downloading a partially downloaded file
wget -r -nd -np -l1 -A ‘*.jpg’ http://www.example.com/dir/ Download a set of files to the current directory
wget ftp://remote/file[1-9].iso/ FTP supports globbing directly
wget -q -O- http://www.pixelbeat.org/timeline.html | grep ‘a href’ | head Process output directly
echo ‘wget url’ | at 01:00 Download url at 1AM to current dir
wget –limit-rate=20k url Do a low priority download (limit to 20KB/s in this case)
wget -nv –spider –force-html -i bookmarks.html Check links in a file
wget –mirror http://www.example.com/ Efficiently update a local copy of a site (handy from cron)
networking (Note ifconfig, route, mii-tool, nslookup commands are obsolete)
ethtool eth0 Show status of ethernet interface eth0
ethtool –change eth0 autoneg off speed 100 duplex full Manually set ethernet interface speed
iwconfig eth1 Show status of wireless interface eth1
iwconfig eth1 rate 1Mb/s fixed Manually set wireless interface speed
iwlist scan List wireless networks in range
ip link show List network interfaces
ip link set dev eth0 name wan Rename interface eth0 to wan
ip link set dev eth0 up Bring interface eth0 up (or down)
ip addr show List addresses for interfaces
ip addr add 1.2.3.4/24 brd + dev eth0 Add (or del) ip and mask (255.255.255.0)
ip route show List routing table
ip route add default via 1.2.3.254 Set default gateway to 1.2.3.254
tc qdisc add dev lo root handle 1:0 netem delay 20msec Add 20ms latency to loopback device (for testing)
tc qdisc del dev lo root Remove latency added above
host pixelbeat.org Lookup DNS ip address for name or vice versa
hostname -i Lookup local ip address (equivalent to host `hostname`)
whois pixelbeat.org Lookup whois info for hostname or ip address
netstat -tupl List internet services on a system
netstat -tup List active connections to/from system
windows networking (Note samba is the package that provides all this windows specific networking support)
smbtree Find windows machines. See also findsmb
nmblookup -A 1.2.3.4 Find the windows (netbios) name associated with ip address
smbclient -L windows_box List shares on windows machine or samba server
mount -t smbfs -o fmask=666,guest //windows_box/share /mnt/share Mount a windows share
echo ‘message’ | smbclient -M windows_box Send popup to windows machine (off by default in XP sp2)
text manipulation (Note sed uses stdin and stdout. Newer versions support inplace editing with the -i option)
sed ‘s/string1/string2/g’ Replace string1 with string2
sed ‘s/\(.*\)1/\12/g’ Modify anystring1 to anystring2
sed ‘/ *#/d; /^ *$/d’ Remove comments and blank lines
sed ‘:a; /\\$/N; s/\\\n//; ta’ Concatenate lines with trailing \
sed ‘s/[ \t]*$//’ Remove trailing spaces from lines
sed ‘s/\([\\`\\"$\\\\]\)/\\\1/g’ Escape shell metacharacters active within double quotes
seq 10 | sed “s/^/ /; s/ *\(.\{7,\}\)/\1/” Right align numbers
sed -n ’1000p;1000q Print 1000th line
sed -n ’10,20p;20q Print lines 10 to 20
sed -n ‘s/.*<title>\(.*\)<\/title>.*/\1/ip;T;q Extract title from HTML web page
sed -i 42d ~/.ssh/known_hosts Delete a particular line
sort -t. -k1,1n -k2,2n -k3,3n -k4,4n Sort IPV4 ip addresses
echo ‘Test’ | tr ‘[:lower:]‘ ‘[:upper:]‘ Case conversion
tr -dc ‘[:print:]‘ < /dev/urandom Filter non printable characters
history | wc -l Count lines
set operations (Note you can export LANG=C for speed. Also these assume no duplicate lines within a file)
sort file1 file2 | uniq Union of unsorted files
sort file1 file2 | uniq -d Intersection of unsorted files
sort file1 file1 file2 | uniq -u Difference of unsorted files
sort file1 file2 | uniq -u Symmetric Difference of unsorted files
join -a1 -a2 file1 file2 Union of sorted files
join file1 file2 Intersection of sorted files
join -v2 file1 file2 Difference of sorted files
join -v1 -v2 file1 file2 Symmetric Difference of sorted files
math
echo ‘(1 + sqrt(5))/2′ | bc -l Quick math (Calculate ?). See also bc
echo ‘pad=20; min=64; (100*10^6)/((pad+min)*8)’ | bc More complex (int) e.g. This shows max FastE packet rate
echo ‘pad=20; min=64; print (100E6)/((pad+min)*8)’ | python Python handles scientific notation
echo ‘pad=20; plot [64:1518] (100*10**6)/((pad+x)*8)’ | gnuplot -persist Plot FastE packet rate vs packet size
echo ‘obase=16; ibase=10; 64206′ | bc Base conversion (decimal to hexadecimal)
echo $((0x2dec)) Base conversion (hex to dec) ((shell arithmetic expansion))
units -t ’100m/9.69s‘ ‘miles/hour’ Unit conversion (metric to imperial)
units -t ’500GB’ ‘GiB’ Unit conversion (SI to IEC prefixes)
units -t ’1 googol’ Definition lookup
seq 100 | (tr ‘\n’ +; echo 0) | bc Add a column of numbers. See also add and funcpy
calendar
cal -3 Display a calendar
cal 9 1752 Display a calendar for a particular month year
date -d fri What date is it this friday. See also day
[ $(date -d "tomorrow" +%d) = "01" ] || exit exit a script unless it’s the last day of the month
date –date=’25 Dec’ +%A What day does xmas fall on, this year
date –date=’@2147483647′ Convert seconds since the epoch (1970-01-01 UTC) to date
TZ=’:America/Los_Angeles’ date What time is it on West coast of US (use tzselect to find TZ)
echo “mail -s ‘get the train’ P@draigBrady.com < /dev/null” | at 17:45 Email reminder
echo “DISPLAY=$DISPLAY xmessage cooker” | at “NOW + 30 minutes” Popup reminder
locales
printf “%’d\n” 1234 Print number with thousands grouping appropriate to locale
BLOCK_SIZE=\’1 ls -l get ls to do thousands grouping appropriate to locale
echo “I live in `locale territory`” Extract info from locale database
LANG=en_IE.utf8 locale int_prefix Lookup locale info for specific country. See also ccodes
locale | cut -d= -f1 | xargs locale -kc | less List fields available in locale database
recode (Obsoletes iconv, dos2unix, unix2dos)
recode -l | less Show available conversions (aliases on each line)
recode windows-1252.. file_to_change.txt Windows “ansi” to local charset (auto does CRLF conversion)
recode utf-8/CRLF.. file_to_change.txt Windows utf8 to local charset
recode iso-8859-15..utf8 file_to_change.txt Latin9 (western europe) to utf8
recode ../b64 < file.txt > file.b64 Base64 encode
recode /qp.. < file.txt > file.qp Quoted printable decode
recode ..HTML < file.txt > file.html Text to HTML
recode -lf windows-1252 | grep euro Lookup table of characters
echo -n 0×80 | recode latin-9/x1..dump Show what a code represents in latin-9 charmap
echo -n 0x20AC | recode ucs-2/x2..latin-9/x Show latin-9 encoding
echo -n 0x20AC | recode ucs-2/x2..utf-8/x Show utf-8 encoding
CDs
gzip < /dev/cdrom > cdrom.iso.gz Save copy of data cdrom
mkisofs -V LABEL -r dir | gzip > cdrom.iso.gz Create cdrom image from contents of dir
mount -o loop cdrom.iso /mnt/dir Mount the cdrom image at /mnt/dir (read only)
cdrecord -v dev=/dev/cdrom blank=fast Clear a CDRW
gzip -dc cdrom.iso.gz | cdrecord -v dev=/dev/cdrom - Burn cdrom image (use dev=ATAPI -scanbus to confirm dev)
cdparanoia -B Rip audio tracks from CD to wav files in current dir
cdrecord -v dev=/dev/cdrom -audio *.wav Make audio CD from all wavs in current dir (see also cdrdao)
oggenc –tracknum=’track’ track.cdda.wav -o ‘track.ogg’ Make ogg file from wav file
disk space (See also FSlint)
ls -lSr Show files by size, biggest last
du -s * | sort -k1,1rn | head Show top disk users in current dir. See also dutop
df -h Show free space on mounted filesystems
df -i Show free inodes on mounted filesystems
fdisk -l Show disks partitions sizes and types (run as root)
rpm -q -a –qf ‘%10{SIZE}\t%{NAME}\n’ | sort -k1,1n List all packages by installed size (Bytes) on rpm distros
dpkg-query -W -f=’${Installed-Size;10}\t${Package}\n’ | sort -k1,1n List all packages by installed size (KBytes) on deb distros
dd bs=1 seek=2TB if=/dev/null of=ext3.test Create a large test file (taking no space). See also truncate
> file truncate data of file or create an empty file
monitoring/debugging
tail -f /var/log/messages Monitor messages in a log file
strace -c ls >/dev/null Summarise/profile system calls made by command
strace -f -e open ls >/dev/null List system calls made by command
ltrace -f -e getenv ls >/dev/null List library calls made by command
lsof -p $$ List paths that process id has open
lsof ~ List processes that have specified path open
tcpdump not port 22 Show network traffic except ssh. See also tcpdump_not_me
ps -e -o pid,args –forest List processes in a hierarchy
ps -e -o pcpu,cpu,nice,state,cputime,args –sort pcpu | sed ‘/^ 0.0 /d’ List processes by % cpu usage
ps -e -orss=,args= | sort -b -k1,1n | pr -TW$COLUMNS List processes by mem usage. See also ps_mem.py
ps -C firefox-bin -L -o pid,tid,pcpu,state List all threads for a particular process
ps -p 1,2 List info for particular process IDs
last reboot Show system reboot history
free -m Show amount of (remaining) RAM (-m displays in MB)
watch -n.1 ‘cat /proc/interrupts’ Watch changeable data continuously
system information (see also sysinfo) (‘#’ means root access is required)
uname -a Show kernel version and system architecture
head -n1 /etc/issue Show name and version of distribution
cat /proc/partitions Show all partitions registered on the system
grep MemTotal /proc/meminfo Show RAM total seen by the system
grep “model name” /proc/cpuinfo Show CPU(s) info
lspci -tv Show PCI info
lsusb -tv Show USB info
mount | column -t List mounted filesystems on the system (and align output)
grep -F capacity: /proc/acpi/battery/BAT0/info Show state of cells in laptop battery
# dmidecode -q | less Display SMBIOS/DMI information
# smartctl -A /dev/sda | grep Power_On_Hours How long has this disk (system) been powered on in total
# hdparm -i /dev/sda Show info about disk sda
# hdparm -tT /dev/sda Do a read speed test on disk sda
# badblocks -s /dev/sda Test for unreadable blocks on disk sda
interactive (see also linux keyboard shortcuts)
readline Line editor used by bash, python, bc, gnuplot, …
screen Virtual terminals with detach capability, …
mc Powerful file manager that can browse rpm, tar, ftp, ssh, …
gnuplot Interactive/scriptable graphing
links Web browser
xdg-open http://www.pixelbeat.org/ open a file or url with the registered desktop application
miscellaneous
alias hd=’od -Ax -tx1z -v’ Handy hexdump. (usage e.g.: • hd /proc/self/cmdline | less)
alias realpath=’readlink -f’ Canonicalize path. (usage e.g.: • realpath ~/../$USER)
set | grep $USER Search current environment
touch -c -t 0304050607 file Set file timestamp (YYMMDDhhmm)
python -m SimpleHTTPServer Serve current directory tree at http://$HOSTNAME:8000/
Linux

Regular Expressions Help

Perl Compatible Regular Expressions

Syntax

All features on this cheat sheet are available in Perl, however, the implementation in other environments may differ slightly. Also support
for UTF-8 may vary, e.g. Ruby supports UTF-8 in regex only since Ruby 1.9.
Perl:
$string = m/pattern/modifier
$string = s/pattern/replace/flags
http://www.perl.com/doc/manual/html/pod/perlre.html
Ruby:
string.match(/pattern/flags)
string.sub(/pattern/flags, replace)
string.gsub(/pattern/flags, replace)
http://www.apidock.com/ruby/String
PHP:
preg_match(‘/pattern/flags‘, $string)
preg_replace(‘/pattern/flags‘, ‘replace‘, $string)
http://www.php.net/manual/en/ref.pcre.php
JavaScript:
string.match(/pattern/flags)
string.replace(/pattern/flags, “replace“)
http://developer.mozil a.org/en/docs/Core_JavaScript_1.5_Reference:Objects:RegExp
Java:
string.matches(“(?flags)pattern“)
string.replaceFirst(“(?flags)pattern“, “replace“)
string.replaceAl(“(?flags)pattern“, “replace“)
http://java.sun.com/javase/6/docs/api/java/util/regex/package-summary.html
C:
(requires PCRE library)
pcrecpp::RE(“(?flags)pattern“).PartialMatch(string)
pcrecpp::RE(“(?flags)pattern“).Replace(replace“, &string)
http://www.pcre.org
Objective-C:
(requires RegexKit framework)
[string isMatchedByRexec:@"(?flags)pattern"]
[string stringByMatching:@"(?flags)pattern" replace:1 withString:@"replace"]
[string stringByMatching:@"(?flags)pattern" replace:RKReplaceAll withString:@"replace"]
http://regexkit.sourceforge.net
Shell:
grep -P “(?flags)patternfile.txt
http://www.gnu.org/software/grep/

Characters

These are the usual suspects well known from any C-ish language:
a
match the character a
3
match the number 3
$a or #{a} match the contents of a variable $a or a respectively
\n
newline
(NL, LF)
\r
return
(CR)
\f
form feed (FF)
\t
tab
(TAB)
\x3C
character with the hex code 3C
\u561A
character with the hex code 561A
\e
escape character (alias \u001B)
\c
control character

Wildcards

Wildcards match if a character belongs to the designated class of characters:
.
match any character
\
quote single metacharacter: \. matches a dot instead of any character and \\ matches a single backslash
\w
alphanumeric + underscore (shortcut for [0-9a-zA-Z_])
\W
any character not covered by \w
\d
numeric (shortcut for [0-9])
\D
any character not covered by \d
\s
whitespace (shortcut for [ \t\n\r\f])
\S
any character not covered by \s
[]
any character listed: [a5!d-g] means a, 5, ! and d, e, f, g
[^]
any character not listed: [^a5!d-g] means anything but a, 5, ! and d, e, f, g

Boundaries

Boundaries match the spots between characters and therefore have no width of their own (also called zero-width,? extensions):
\b
matches at a word boundary (spot between \w and \W)
\B
matches anything but a word boundary
^
matches at the beginning of a line (m) or entire string (s)
\A
matches at the beginning of the entire string
$
matches at the end of a line (m) or entire string (s)
\Z
matches at the end of the entire string ignoring a tailing \n
\z
matches at the end of the entire string
\G
matches where the previous regex call left off (? flag g)

Grouping

Any of the above constructs can be grouped in order to improve readability and/or create a reference that can be used in pattern or
replace (? replacing):
()
the matching pattern is assigned to the reference \1 and $1 (outside of the regex context)
()()etc
first group is \1 and $1, second group is \1 and $2 etc
(||)
matches if one of the group options matches and assignes it to \1 and $1
\1, \2 etc
include the contents of the corresponding group

Extensions

Less common functionality is covered by extensions using the (?) syntax. Extensions do not create a reference like grouping does.
(?:|)
same as grouping, but no reference is created
(?=)
zero-width positive lookahead assertion
(?!)
zero-width negative lookahead assertion
(?<=)
zero-width positive lookbehind assertion (no quantifiers allowed within)
(?<!)
zero-width negative lookbehind assertion (no quantifiers allowed within)
(?>)
zero-width independend subexpression
(?()|) conditional expression
(?flags)
apply the flag(s) within the current group from this point forward (? flags)
(?flags:) apply the flag(s) for this pattern (no backreference created!)
(?#)
zero-width comment (no round brackets allowed in comment text)

Quantifiers

Most of the above constructs may be quantified by adding one of the following symbols after them:
?
match 1 or 0 times
*
0 or more times
+
1 or more times
{n}
exactly n times
{n,}
at least n times
{n,m}
at least n but not more than m times, as often as possible

Greedyness

This is a very important feature, ignore it and you will be destined to produce clumsy and error prone regex! Quantifiers are greedy by
default which means they match as often as possible. Limit their hunger by adding a ? after them. Here’s an example applied to the title
of this section:
G.*e
matches to Greedyne
G.*?e
matches to Gre

Quoting

You want to ignore all of the above for a while? Here you go:
\
quote single metacharacter: \. matches a dot instead of any character
\Q \E
ignore all regex metacharacters in between

Replacing

The following symbols have special meanings in the replace part:
\1, \2 etc
include the contents of the corresponding group (? grouping)
\{1}000
same as the above, use curly brackets if numbers follow the symbol
\l
lowercase the following character
\L \E
lowercase all characters in between
\u
uppercase the following character
\U \E
uppercase all characters in between

Flags

Optional flags determine the behaviour of the regex as a whole. May be used within the (?flags) construct (? extensions):
i
case-insensitive pattern matching
m
multiple lines: . does not match \n (Ruby uses this per default)
s
single line: . matches \n (Ruby uses m for this instead)
x
ignore whitespaces in pattern for better readability
The following cannot be used within the (?flags) construct:
g
apply the regex as many times as possible (i.e. for global replace)
e
evaluate the replace part as if it were source code !! DANGER !!
o
compile the pattern only once and therefore perform variable substitutions only once
Uncategorized