# Documentation

### Contents

- Qoobar features
- Qoobar interface
- Working with the Files Table
- Tags editing
- Working with cover art pictures
- Splitting files by CUE sheet
- Automatical filling in the tags
- Importing tags from the Internet
- Renaming files
- Adding ReplayGain info to files
- Qoobar Settings
- Appendix 1. Tags fields supported by Qoobar
- Appendix 2. Qoobar Shortcuts
- Appendix 3. Placeholders and functions
- Appendix 4. Regular expressions

## Qoobar features

- Reading and writing of these standard tags: Composer, Album, Title, Performer (added to enhance classical music tags), Artist, Conductor, Orchestra, Subtitle, Key, Comment, Genre, Year, Track Number, Total Tracks, Album artist, Publisher, Mood, Beats per minute (Tempo), Original artist, Original lyricist, Lyricist, Original album, Lyrics, Music category (Grouping), Copyright, Disc number, Total discs, Remixed by, Encoded by, ISRC, URL, Rating.
- Adding your own tags for all supported file types.
- Full support for the following tag formats and file types:
  - MP3 - id3v1, id3v2, APE tags
  - TrueAudio - id3v1, id3v2 tags
  - FLAC - Vorbis comments
  - Ogg/Vorbis, Ogg/FLAC - Vorbis comments
  - Speex - Vorbis comments
  - Musepack - id3v1, APE tags
  - WavPack - id3v1, APE tags
  - Wma, Asf - Asf tags
  - Mp4 - Mp4 tags
  - APE - id3v1, APE tags.
  - Wav - id3v2 tags
  - Aiff - id3v2 tags
  - Opus - Vorbis comments
  - Dsf - id3v2 tags
- Tabbed interface: you can edit different folders in their own tab.
- Cover art reading, writing and importing from local filesystem.
- Automatic tags generating from files names and other tags.
- Powerful dialog for moving / copying / renaming files.
- Copying and pasting tags between different groups of files.
- Various operations for tags editing include: changing case, tags recoding, transliterating, removing diacritical marks.
- Full support of placeholders in renaming, filling, editing operations.
- Insertion of latin characters with diacritics from the Characters panel that contains a list of German, French, Spanish, Polish etc. additional symbols.
- Undo / redo system: You can undo (and redo) any your action separately for each opened tab. The following actions can be undone:
  - Changing tags in files
  - Adding / removing / changing cover art pictures
- Importing tags from Discogs, Musicbrainz and freedb databases. You can search albums by selected files, by a CD in CD-ROM, or manually - by artist name and album title.
- Splitting of a CD image by the corresponding CUE file.
- Multilanguage interface with the immediate translation.
- Autocompletion for any tag.
- Tagging schemes that define how to read and write tags.
- ReplayGain support in Mp3, Mp4, Ogg Vorbis, Flac, Musepack, WavPack files.
- Command-line interface in Unix-like systems.
- Music files search in standard and user defined locations.

## Qoobar interface

### The Qoobar Menu

#### Menu File

- Add folder... - adds a directory with all its subdirectories Ctrl+O
- Add files... - adds a file / files Ctrl+Shift+O
- Split disc - splits an image of a musical disc (*.ape, *.flac, *.wav) by a cue sheet
- Search files... - searches music files on your computer and places them in a separate tab Ctrl+Shift+F
- Save current tab - saves all changes in the current tab Ctrl+S
- Save all tabs - saves all changes in all tabs
- Reread tags - rereads tags in selected files and undoes all unsaved changes
- Remove from the list - removes selected files from the current tab
- Clear the list - clears the current tab Ctrl+Del
- Exit - exits from Qoobar Ctrl+Del

#### Menu Edit

- Undo last operation Ctrl+Z
- Redo last operation Ctrl+Shift+Z or Ctrl+Y
- Cut - cuts selected tags of selected files Ctrl+X
- Copy - copies selected tags of selected files Ctrl+C
- Paste - pastes copied tags Ctrl+V
- Copy to clipboard - copies selected tags of selected files to the clipboardCtrl+Shift+C
- Paste from clipboard - pastes copied tags from the clipboardCtrl+Shift+V
- Clear all tags - clears all tags in the selected files
- Add new tag... - adds a new tag to selected files Ctrl+N
- Settings... - shows Qoobar settings dialog

#### Menu Tools

- Rename files... - renames / moves files according to its tags Ctrl+R
- Fill tags... - fills tags from file name, tags or Internet Ctrl+F
- Play selected - plays selected files in an external player Ctrl+P
- ReplayGain info... - adds or removes ReplayGain info from files
- Tags editing plugins installed with Qoobar

#### Menu Tabs

- New tab - adds a new tab Ctrl+T
- Close the tab - closes the current tab Ctrl+F4
- Close other tabs - closes all tabs except the current one
- Rename the tab... - opens the dialog to rename the tab

#### Menu Help

- Help - shows help on Qoobar F1
- About Qoobar - shows a brief info about the current version
- About Qt - shows the standard info about the Qt framework
- Check for updates... - searches for new versions available

### The Upper Toolbar

1. Add folder... - adds a directory with all its subdirectories Ctrl+O
2. Add files... - adds a file / files Ctrl+Shift+O
3. Split disc - splits an image of a musical disc (*.ape, *.flac, *.wav) by a cue sheet
4. Save - saves all changes in the current tab Ctrl+S
5. Reread tags - rereads tags in selected files and undoes all unsaved changes
6. Undo / Redo last operation Ctrl+Z / Ctrl+Shift+Z or Ctrl+Y
7. Rename files... - renames / moves files according to its tags Ctrl+R
8. Fill tags... - fills tags from file name, tags or Internet Ctrl+F
9. Delete all tags - deletes all tags in the selected files
10. Clear the list - clears the current tab Ctrl+Del
11. Play selected - plays selected files in an external player Ctrl+P
12. Cut - cuts selected tags of selected files Ctrl+X
13. Copy - copies selected tags of selected files Ctrl+C
14. Paste - pastes copied tags Ctrl+V
15. Add new tag... - adds a new tag to selected files Ctrl+N

### The Files Table

### The Folders Tree

### The Tags Table

### The Status Bar

The Status Bar shows:

- file name with full path
- file bitrate, sample rate, and number of channels
- file length (duration)
- total length of selected files.

## Working with the Files Table

### Files adding

You can add a folder with all its subfolders and musical files using the button or shortcut Ctrl+O.

To add some files use the button or shortcut Shift+Ctrl+O.

You can also drag&drop any folders and any files into the Qoobar window; or use command line like this:

    qoobar "/home/I/music/first dir" /home/I/music/just_file.mp3

Using the Folder Tree you can easily browse your music library. The folder you click will be placed into the Files Table. To add a folder with all its subfolders and musical files right-click on this folder and choose "List this folder with all subfolders"

Files are always appended to the end of the current tab.

If the number of added files is less than 100, they will be automatically selected.

If some files you are adding are read-only, a warning message will appear, and these files will be grayed-out in the Files table.

### Files search

Pressing Ctrl+Shift+F (or menu File -> Search files) enables the files search. If the current tab is empty, the Search Bar shows in it, otherwise another tab will be opened with the Search Bar.

.

First of all you need to set up the search location(s). There is already one default location - your Music folder, but you can add as many other folders as you wish to perform search in them.

Next, type the text to search, f.e. Madonna (kidding, it will obviously be Pettersson), click 'Start search' and wait for the search to finish. If you have found enough files or just tired of waiting, click 'Stop search'.

You can specify additional search options in the menu of the search field. By default search is case-insensitive and diacritics are also ignored.

### Files removing

To remove all files in the current tab click .

Or click in the Files Table, press Ctrl+A, then Del.

Or just press Ctrl+Del.

To remove some of the added files select them and press Del.

When removing some not saved files, a simple dialog appears where you can choose whether to save changes or discard them:

.

Files removing clears the undo stack.

### Files saving

To save all files in the current tab click .

Or press Ctrl+S.

If you click on the icon in the leftmost column, all changes will be written in the file:

If you have selected only mp3 files, you can duplicate tags in the desirable formats. In the context menu choose "Mp3 tag types..." and the dialog appears:

Remember though that this dialog overrides global settings only for selected files, so if you want to set mp3 tag types once and for all, please use the Settings dialog.

Files saving clears the undo stack.

### Other operations

1. To reread files (and undo all changes) click .
2. To play selected files in an external player click or press Ctrl+P. You should set the path to this player in the Qoobar settings dialog.
3. To move files up and down the list use shortcuts Ctrl+Up / Ctrl+Down.
4. To sort files in the Files table by some tag click on the column header.
5. To delete all tags from selected files click . It removes all tags which Qoobar can read. You can undo the deletion.
6. To move selected files into (an)other tab choose the desired tab name under the "Move to the tab..." item in the context menu.

## Tags editing

First select one or several files in the Files table.

To set one tag for all selected files - click on this tag (f.e. on the "Artist" tag) and type a text.

To edit one tag file by file - double-click the tag.

To number tracks starting from 1 to N (N is the number of selected files) - click on the "Track number" tag, type `1` and press Enter.

Note: If you type `01`, track numbers will be two-digit formatted: 01, 02 etc.

To remove some tags select these tags in the Tags Table and press Delete.

Note: You can change a tag in the Files table by double clicking on it.

### Copying and pasting tags

If you copy only one tag (only one line in the Tags Table), you can paste it where you want, even if you select other files.

If you copy several tags (Composer and Album, for example), you can only paste them into the same tags (though you can select other files).

You can paste some text from the clipboard into one selected tag.

Copying selected tags into the clipboard is also possible.

### Operations with tags

There is a number of operations that you can use to edit tags. You can find them in the context menu:

- Change case - changes case to lower, upper, sentence-like etc. The equivalent functions: `$lower`, `$upper`, `$caps`, `$caps2`.
- Simplify whitespaces - removes leading, trailing and inner extra whitespaces. The equivalent function: `$simplify`
- Remove diacritics - replaces latin characters with diacritical marks by plain ones. The equivalent functions: `$ansi` or `$ascii`
- Transliterate - replaces cyrillic (Russian) characters with latin ones according to this scheme. The equivalent function: `$transliterate`.
- Fix encoding - recodes tags written in local encodings (f.e. Russian Windows 1251, KOI8-R, and CP866) into UTF8. Qoobar uses enca for guessing the tag encoding, so if you want a better guess, please set a preferable language in the Settings dialog. The default enca guess language is Russian. The equivalent function: `$recode`.

### Tags autocompletion

Qoobar can autocomplete any tag while you are typing some text. This feature is turned on by default only for composers, genres, and moods. If you want to turn on autocompletion for other tags, do it in the Settings dialog. You can also edit autocompletion lists in the Settings dialog.

There are two modes for adding completion variants: automatic and manual (the default one). To manually "remember" tag select it and use "collect for future use" action or shortcut Ctrl+H.

If the automatic collecting is turned on in the Settings dialog, then tags will be collected (remembered for future use) automatically when you press Enter in the Tags Table or OK in the Edit Dialog.

### Adding your own tag

You can add your own tag to the selected files. Click or press Ctrl+N. A dialog appears:

Type a tag name with latin characters, spaces and underscores. Then click OK. The newly added tag will be appended to the Tags Table.

If you don't add something in the newly added tag, it will be lost.

If you want to make this tag permanent (that is to add it to your tagging scheme), then select the tag row and choose the option "Add this tag to the scheme" in the context menu of the row name. If the default scheme is used, it will automatically be cloned. If the tag is already present in the scheme, a warning message will be shown. Tag fields for every tag format will be constructed by using the tag name, but you can edit them in the Tagging schemes dialog. This is the quickest way to add custom tag to the scheme (and not to only selected files).

### Placeholders and functions

If you want to join different tags together or add some text to a tag just in one operation, you can make use of placeholders. A placeholder is a variable that contains a tag or other info of one file.

There are two types of placeholders: short and long ones.

Short placeholders begin with '%', followed by one latin letter, for example `%t` for title, `%a` for album, `%n` for track number, and so on. There are only 44 predefinite short placeholders that cover all standard tags and file properties supported by Qoobar.

Long placeholder is a tag name enclosed in < and >, f.e. <title> or <performer>. Note that long placeholders are case and spaces irrelevant, so <tracknumber> and <Track Number> are equivalent. You can also use localized tag name instead of the English name, that is if the German language is chosen as the user interface language, you can use either %c, <composer> or <komponist> for the composer tag.

Unlike short placeholders, long placeholders are not limited by 44 predefinite tags: any tag name shown in the Tags Table can be used as a long placeholder. In other words, every user tag added to the tagging scheme, any new tag added to the Tags Table, and even any non-standard tag added by other tagging program can be addressed by its name.

Examples: <TSSE> in some mp3 files (Software/Hardware and settings used for encoding) or <----:com.apple.iTunes:TAGGINGTIME> in mp4 files.

The full list of available placeholders can be found in Appendix 3.

Examples

Scheme | Source | Result
--- | --- | ---
`%n. %t` |
track numbers: 1 2 3 | track titles: title another title the third title
| track titles: 1. title 2. another title 3. the third title
`%N. %t` |
track numbers: 1 2 3 | track titles: title another title the third title
| track titles: 01. title 02. another title 03. the third title
`[%n. ]%t` |
track numbers: 1 2 | track titles: title another title the third title
| track titles: 1. title 2. another title the third title
`appended text - %t` | track titles: title another title the third title | track titles: appended text - title appended text - another title appended text - the third title

Functions are similar to that of Foobar. They help to automate and simplify work with tags. For example, to simplify files renaming you can make use of `$last_word` function, which returns the last word of its argument. So if you have the conductor set to "Sergiu Celibidache", the rename pattern may look like `%a ($last_word(%d))/%N. %t`, which gives us f.e. "Symphony No.6 A-Dur (Celibidache)/01. Maestoso.flac" (guess what composer it is :)).

You can use nested functions: `$upper($replace(%A, an, the))` replaces all occurrences of "an" by "the" in the artist tag and returns uppercased result. `$upper($lw(%c))` returns an uppercase of the last word in the composer tag.

You can use brackets [ ] to remove sections if the function result is empty, f.e. `[Section from 2nd to 20th character of album is $section(%a,2,20)]` will be removed if the album tag is shorter than 2 characters.

The full list of functions can be found in Appendix 3.

Note: Not all functions works identical to their Foobar equivalents, please test it before using.

### Using autonumbering function

In rare cases there may be a necessity to add some highly structured text to a tag. For example, when you are editing some opera and want to add text like "Act 1. Scene 1." etc. It can be quite tedious to type all these acts and scenes manually. Instead use the autonumbering function:

    {startNumber-endNumber, someNumber:repeatNTimes, someOtherNumber:repeatMTimes; otherStartNumber, m1:k1, m2:k2}

Let's see an example. Suppose we have 'raw' track titles of Debussy's opera "Pelleas and Melisande". We want to structure them by giving each track title a description: "Act 1. Scene 2. Title" and so on. So we have:

Original titles | What we want to get
--- | ---
Je ne pourrai plus sortir de cette forêt Qu'est-ce qui brille ainsi, au fond de l'eau? Interlude (Orchestre) Voici ce qu'il écrit à son frère Pelléas: ''Un soir, je l'ai trouvée'' Je n'en dis rien Grand-père, j'ai reçu en même temps que la lettre de mon frère Interlude (Orchestre) Il fait sombre dans les jardins Hoé! Hisse hoé! Hoé! Hoé! Vous ne savez pas où je vous ai menée? C'est au bord d'une fontaine aussi qu'il vous a trouvée? Interlude (Orchestre) Ah! Ah! Tout va bien, cela ne sera rien Je suis... je suis malade ici Il est vrai que ce château est très vieux et très sombre | Act 1. Scene 1. Je ne pourrai plus sortir de cette forêt Act 1. Scene 1. Qu'est-ce qui brille ainsi, au fond de l'eau? Act 1. Scene 1. Interlude (Orchestre) Act 1. Scene 2. Voici ce qu'il écrit à son frère Pelléas: ''Un soir, je l'ai trouvée'' Act 1. Scene 2. Je n'en dis rien Act 1. Scene 2. Grand-père, j'ai reçu en même temps que la lettre de mon frère Act 1. Scene 2. Interlude (Orchestre) Act 1. Scene 3. Il fait sombre dans les jardins Act 1. Scene 3. Hoé! Hisse hoé! Hoé! Hoé! Act 2. Scene 1. Vous ne savez pas où je vous ai menée? Act 2. Scene 1. C'est au bord d'une fontaine aussi qu'il vous a trouvée? Act 2. Scene 1. Interlude (Orchestre) Act 2. Ah! Ah! Tout va bien, cela ne sera rien Act 2. Je suis... je suis malade ici Act 2. Il est vrai que ce château est très vieux et très sombre

Let's compose our functions according to what we want to achieve:

Acts number from 1, Act 1 lasts 9 tracks, Act 2 lasts 6 tracks, so we have:

    For acts: {1, 1:9, 2:6}

Act 1 consists of 3 scenes, where Scene 1 contains 3 tracks, Scene 2 - 4 tracks, and Scene 3 - 2 tracks. Then Act 2 begins, so we need to start numeration from the beginning (thus ';'). Scene 1 of Act 1 contains 3 tracks, so we get

    For scenes: {1-3, 1:3, 2:4, 3:2; 1-1, 1:3}

We do not need Scene 2 in Act 2, so we should use square brackets:

    Act {1, 1:9, 2:6}. [Scene {1-3, 1:3, 2:4, 3:2; 1-1, 1:3}. ]%t

Type this text into the title tag to achieve our goal!

Tip: You can omit commas: `{1-3 1:3 2:4 3:2; 1-1 1:3}`.

More examples: we have selected 7 files

Function | What we get file by file
--- | ---
`{}` | 1, 2, 3, 4, 5, 6, 7
`{1}` | 1, 2, 3, 4, 5, 6, 7
`{2}` | 2, 3, 4, 5, 6, 7, 8
`{1-5}` | 1, 2, 3, 4, 5, _, _
`{2-5}` | 2, 3, 4, 5, _, _, _
`{1, 1:2}` | 1, 1, 2, 3, 4, 5, 6
`{1, 1:2, 2:3}` | 1, 1, 2, 2, 2, 3, 4
`{1-3, 1:2, 2:3; 1, 1:2}` | 1, 1, 2, 2, 2, 1, 1

Here _ means "nothing" and not underscore.

### The Edit Dialog

When you double-click any tag in the Tags Table, the edit dialog appears:

The toolbar contains buttons for quick access to tags editing operations described earlier. The button "Collect for future use" helps adding tag values to autocomplete lists.

The first line: this line contains the text that will be written into all selected files. On the image above all titles are different, so the first line is empty. If you type some text here, it will overwrite the values below.

Multiple values: different text for different files. If you change any line here, the first line will be cleared.

The left-most panel contains various characters with diacritics. It can be hidden if not necessary. Also a list of characters can be edited in the Qoobar settings.
To insert some character place the cursor where needed and left-click the character. To insert its upper case variant click the character while holding down the Shift key.

The Legend button gives you access to placeholders which can be used just like here.

Autofilling track numbers. If you are editing track numbers you can autonumber them by typing 1 in the first line. If you are editing other tags please use the autonumbering function.

Using tags autocompletion: The autocompletion is available here as well.

Filling in tags: To quickly "parse" parts of a tag into other tags use the context menu:

Set this text into...: sets the selected text into all selected files as 'Artist' (f.e.).

Set this block into...: extracts similar texts in other rows of 'Multiple values' and sets them as 'Artist' (f.e.). To see what text will be selected in other rows select some text in the current row while holding down Ctrl key.

Find & Replace: Press Ctrl+F to show the find & replace panel.

You can navigate through the table by clicking buttons or using shortcuts: F3 (Ctrl+G in Linux) - find next, Shift+F3 (Shift+Ctrl+G in Linux) - find previous.

The Options button allows you to specify some search options:

- Case Sensitive
- Whole Words Only
- Use Regular Expressions. The available regular expressions are listed in Appendix 4.

## Working with Cover Art pictures

Qoobar supports reading and writing of embedded pictures for all file types. You can also cut/copy picture from one group of selected files and paste it into other files. Tags importing from Discogs and Musicbrainz also imports cover art picture, if there is such. You can edit cover art type and description in the panel shown below:

and also undo / redo any changes in the picture info.

If you click on the picture, a dialog with full-size picture appears. To close it click on the picture again.

You can also resize the imported picture to desired width and height.

Exporting pictures to a hard drive is also supported. You can choose between JPG and PNG file formats.

## Splitting files by CUE sheet

If you have a disc image (ape or flac or wav) and a cue file with it, Qoobar can split it to separate tracks, just click .
If you don't have shntool, flac and mac programs, install them.

- In Linux you should install flac and shntool from your repository. The mac deb package can be downloaded from http://members.iinet.net.au/~aidanjm/mac-3.99-u4_b3-1_i386.deb. For other systems please visit http://etree.org/shnutils/shntool/.
- Qoobar installer for Windows and Mac is distributed with all necessary executables.

If you have ffmpeg installed on your computer, you can choose the output files format. By default the format is flac, but you can set it to be m4a (ALAC codec), m4a (AAC codec), ogg, wma, wavpack, tta, speex, opus or mp3. I recommend to set 'alac' in Mac OS X and 'flac' in other systems, as they are lossless formats.

Note: By default all lossy formats are encoded with bitrate 320kb/s. If you want to change the bitrate, edit splitandconvert.sh or splitandconvert.bat script file and change the line "bitrate=320K" (or "set bitrate=320K").

Since ffmpeg is rather heavy, it is not shipped with the Qoobar installation. On Windows you can download ffmpeg.exe from http://ffmpeg.zeranoe.com/builds/win32/static/ffmpeg-latest-win32-static.7z. Download the archive, unpack it and put ffmpeg.exe into the Qoobar installation folder.

On Mac OS X you can install it:

1. using HomeBrew: brew install ffmpeg
2. using MacPorts: sudo port install ffmpeg
3. download it from ffmpegmac.net and place the executable into qoobar.app/Contents/Resources/ folder.

In Linux simply use your software manager.

## Automatic filling in the tags

You can fill in the tags of selected files from their names or other tags. Select one or more files and click the button or press Ctrl+F. A dialog will appear:

1. Choose a source - file names, clipboard or one of tags.

2. Set a filename pattern (use / and \ to set folders). You can use all the non-read-only placeholders listed in Appendix 3. They can also be found under the "Legend" button.

All other characters will be treated as delimiters. And don't use patterns with no delimiter between two placeholders.

Use the `%%` combination if you want to skip some part of a file name. For example, if you have, say, 50 files "Unknown Artist - 1 - some_meaningful_title_1", "Unknown Artist - 2 - some_meaningful_title_2" etc. and you only want to extract Titles, use this pattern: `%% - %% - %t`.

3. Unselect files you don't want to change. Note that old tags are shown grayed.

4. Press OK.

## Importing tags from the Internet

You can import tags of an album from the Internet. Qoobar can search tags in freedb, Discogs, Musicbrainz and other databases, depending on the installed plugins. Click the button and the dialog will appear:

1. Choose the server. You need to have at least one download plugin installed - Discogs, freedb, GD3 or Musicbrainz.

2. Choose the search mode - by the lengths of selected files, by CD in CD-ROM, or manually - by artist name and album title.

3. Click "Start" and wait a little. The list of found albums will appear in the left panel.

4. Choose an album (just click on it) and wait while its details are being downloaded. Be patient here: if you are searching in Discogs and Musicbrainz, cover art pictures can require some time to be downloaded.

5. Uncheck tags which you do not want to import and click OK.

## Renaming files

To open the Renaming files dialog click the button or press Ctrl+R.

Qoobar supports three rename operations:

1. File rename / move
2. File copy
3. Folder rename

The first two operations allow you to change file names, create nested folders etc. The latter one is intended for folder renaming without any touching of file names. In this mode some rename options are disabled by default.

The ordinary workflow is as follows:

1. Choose the desired operation.
2. Choose the output folder. If you don't select one, files will be written in their original locations. In "folder rename" mode the output folder is always the folder one level up, so this option is disabled.
3. Set a file renaming pattern (use slash / or backslash \ to create subfolders). You can use all placeholders and functions listed in Appendix 3. They can also be found under the "Legend" button.
   There are three predefined patterns. You can edit these patterns in the Settings dialog. Any pattern you use will be added to the patterns list for later use.
   If some tag is empty, the special character will be inserted instead. But you can enclose empty tags in brackets [], and this section will be removed from the file name.
   In "folder rename" mode subfolders creation is not allowed, and all slashes and backslashes will be replaced by "_".

4. Adjust the additional processing of file names.

   The special Windows symbols in tags are replaced by default as follows:

   - Question ? will be removed
   - Double quotes " will be replaced with two single ones ''
   - Greater/lesser characters < > will be replaced with parentheses ( )
   - Slash / and backslash \ are used to create subfolders, but in tags they will be replaced with the special character (underscore _ by default)
   - Characters | : * will be replaced by underscore

   You can specify the maximum file name length. But whatever the value all file names in Windows are truncated to 255 characters.

Example:

    %c (1905-1975)/%a/[%N. ]%t

for ogg file containing tags

- Composer="Bela Bartok",
- Album="Microkosmos",
- Track number=2,
- Title = "Ostinato"

the new file name will be

    "Bela Bartok (1905-1975)/Microcosmos/02. Ostinato.ogg"

If you remove the track number, the new file name will be

    "Bela Bartok (1905-1975)/Microcosmos/Ostinato.ogg"

## Adding ReplayGain info to files

Qoobar can help you replaygain your musical files. This feature is not yet completely implemented, so only the following file type are supported: mp3, mp4/m4a, musepack, flac, ogg, wavpack.

Qoobar so far uses external utilities to do ReplayGain scanning, so if you are using one of Unixes, you need to install these utilities from your repository: mp3gain for mp3 files, aacgain for mp4/m4a files, vorbisgain for ogg files, metaflac for flac files, mpcgain and replaygain for mpc files, and wvgain for wavpack files. You can check whether all utilities can be found by Qoobar in the Utilities page of the Settings dialog. The Windows installation of Qoobar already has all necessary utilities.

Qoobar so far cannot replaygain the following file types: ape, wma, wav, speex, tta, oga, aiff.

Scanning for ReplayGain info:

1. Select files, as many as you want. Qoobar will sort these files according to their type, so you cannot scan a folder that contains both mp3 and flac files as a single album.
2. In the context menu or the "Tools" menu click "ReplayGain info...". If some files you have selected have not saved changes, a dialog will appear with the suggestion to save them. Please save these files if you want to proceed. Then a dialog appears:

3. Now you can use one of the buttons to start scanning:
   - Scan per file track gain - All files you have selected will be scanned independently.
   - Scan as a single album - All files you have selected will be scanned as one album regardless of their position or the "Album" tag.
   - Scan as albums (by tags) - All files you have selected will be sorted according to their "Album" tag and scanned by groups.
   - Scan as albums (by folders) - All files you have selected will be sorted according to their position and scanned by groups.
   - Remove replaygain tags from files - The replaygain info will be removed from files.

Note 1: Qoobar can skip already scanned files. Just click on the "Skip already scanned files" checkbox.

Note 2: If you are encountering messages like "Couldn't find file" or "The FLAC file could not be opened", open the Qoobar settings dialog and on the Utilities page set the "Copy files into temp folder before replaygaining them" option.

Note 3: Using of external utilities is not a good way to do scanning. Maybe in some distant releases I will implement a unified algorithm just like one Foobar uses.

## Qoobar Settings

You can reset all settings to their defaults by clicking the "Reset Settings" button in the bottom left corner.

### Interface.

- Use undo / redo - this option lets you switch on/off the undo system.
- Automatically fill a tag in all selected files when pasting a single line: if this feature is on, you can select one file, copy its tags, then select several files and paste the copied tags right into all files, not only the 1st of them.
- Show folder tree - shows/hides the Folder Tree in the main window.
- Hide Tab bar with only one tab - If this option is set, the Tab bar will automatically be hidden if less than 2 tabs are opened.
- Characters: characters with diacritical marks of the Tags Edit dialog - edit the text to add or remove characters. You can also change the font if characters are too small or not recognisable.
- User interface language - the user interface language.

### Autocompletion.

- Collect text - choose automatic / manual text collecting.
- Completion style - here you can choose whether completion matches the whole string or just the last word in it.
- The table below: switch on/off autocompletion for different tag types and edit lists of variants.

### Tags Writing

- Save changes when closing Qoobar - check this item to automatically save all unsaved files, both selected and not selected.
- Simplify whitespaces when saving files - if you find it tedious to manually remove extra spaces, tabs etc., check this item, and Qoobar will do it automatically. Qoobar also always skips Comments and Lyrics tags.
- Write tags separated by ; in different fields - This option works only for flac, ape, ogg, oga, spx files. If you check on this option, the string "some text;another text;some other text" will be written not as one field "ARTIST=some text;another text;some other text" but as three different fields "ARTIST=some text", "ARTIST=another text", "ARTIST=some other text".
- Mp3 files - there you can choose which tags to read and write.
- ID3v2 tags version - the default version of ID3v2 tags when saving.
- Ogg / Speex files - you can choose into which tag to write your cover - the old one (COVERART) or the new preferred one (METADATA_BLOCK_PICTURE).
- ID3v1 tags - there you can choose how to duplicate ID3v2 tags into ID3v1.
- Transliterate Russian words - if you set this option, all Cyrillic letters in id3v1 tags will be replaced according to this scheme:

  а | a |  | р | r
  б | b |  | с | s
  в | v |  | т | t
  г | g |  | у | u
  д | d |  | ф | f
  е, ё | e |  | х | kh
  ж | zh |  | ц | c
  з | z |  | ч | ch
  и | i |  | ш | sh
  й | j |  | щ | x
  к | k |  | ъ | w
  л | l |  | ы | y
  м | m |  | ь | j
  н | n |  | э | eh
  о | o |  | ю | yu
  п | p |  | я | ya

### Patterns

- Renaming patterns - here you can edit the list of patterns which will be available when you rename files.

- Tagging schemes - here you can choose which scheme to use for tags reading and writing. There are one default scheme (you cannot edit or delete this scheme, but only clone it) and 4 more schemes, which you can change: Tag&Rename, Mp3tag, Iain Lamb's scheme, Musicbrainz Picard.

  You can edit scheme, clone or remove it (except the default one). If you click on the "Edit" button, a dialog will appear:

  You can change the scheme name in the first line. The table sets the correspondence between Qoobar tags and various fields for 5 tag formats. If you want to set several fields for one tag, then separate them by semicolon, f.e. in the default scheme the tag "Total tracks" are written into APE files into 3 different fields: `TOTALTRACKS;TRACKNUMBER;TRACKTOTAL`.

  If you set the same field for "Track number" and "Total tracks" tags, f.e. `TRACKNUMBER`, the resulting field value will be written as "track_number/total_tracks", and vice versa, when reading the field `TRACKNUMBER` with the value "02/10" it will be parsed as "Track number=02", "Total tracks=10".

  You can add your own tags by using the "+" button below.

  - This tag will constantly be visible in the Tags Table, although the Files Table will not show these custom tags.
  - Double clicking on the row name allows to change the tags name, this name will be used in the Tags Table. This name will not be localized, but you can enter any name you want.
  - The next step is to set fields for all five tag formats. Please note the peculiarities in the paragraph below.

  Example: Let's add the "File Owner" tag. First click on "+". Then double-click on the row name and input "File Owner" (without the quotes). Next fill in the fields: "TOWN" in the ID3v2 cell (this is the standard field listed in the ID3v2 specification, so no "TXXX:" prefix needed), "----:com.apple.iTunes:FILEOWNER" in the MP4 cell, and "FILEOWNER" in the other cells. Click "Save".

  If you want to remove some tag from the scheme, click on any field on the tag row and then click "-". Removing of standard tags (that is Composer through ISRC) is not supported. If you want to remove them, simply hide them by choosing the "Show/hide tags..." option in the Tags Table context menu.

  Note: Please if possible restart Qoobar so the scheme changes can fully be applied.

  There are some peculiarities for ID3v2, Asf and Mp4 formats:

  - ID3v2: Use prefix `TXXX:` for non-standard text fields, `WXXX:` for non-standard web URLs, and `COMM:` for custom comments. You can also use all text fields listed in the ID3v2.3/4 specification.
  - Mp4: Use prefix `----:com.apple.iTunes:` for your non-standard fields. The grayed internal fields are handled internally by Qoobar and cannot be changed.
  - Asf: The grayed internal fields are handled internally by Qoobar and cannot be changed.

### Utilities

- Player command - the external player name (with the full path optionally).
- CD-ROM device - type here the path to the CD-ROM Qoobar can read (or left this field blank if you have only one CD-ROM).
- Cue files encoding - the default encoding to use for reading cue files.
- External programs - here you can find out if all external programs are properly found by Qoobar.
- Default language to use with the enca utility - the language that enca uses to guess the encoding of the wrong written tags (f.e. when reading id3v2 tags of mp3 file that was previously saved with Windows-1251 encoding).
- Copy files into temp folder before replaygaining them - if this option is set, the files you are scanning for replaygain info will be copied to the temp directory first, processed and finally moved back.

### Network

Here you can set proxy parameters if you use a proxy server.

### Plugins

Here you can view installed plugins. They are divided into two groups:

- Download plugins - list of sources used in the Fill dialog.
- Tags editing plugins - list of plugins under the Tools menu.

## Appendix 1. The default tagging scheme supported by Qoobar

The table contains all fields that Qoobar read and write in 5 different tag types: ID3v2.4, APE, Xiph, Asf, MP4.

Internal means that this field is stored in the file without any field key.

| ID3v2.4 fields | Vorbis comments | APE fields | Asf fields | MP4 fields
--- | --- | --- | --- | --- | ---
Composer | TCOM | COMPOSER | COMPOSER | WM/Composer | ©wrt
Album | TALB | ALBUM | ALBUM | WM/AlbumTitle | ©alb
Original Album | TOAL | ORIGINALALBUM | ORIGINALALBUM | WM/OriginalAlbumTitle | ----:com.apple.iTunes:ORIGINALALBUM
Title | TIT2 | TITLE | TITLE | Internal | ©nam
Subtitle 1 | TIT3 | SUBTITLE | SUBTITLE | WM/SubTitle | subt
Music Category 2 | TIT1 | GROUPING | GROUPING | WM/ContentGroupDescription | ©grp
Artist | TPE1 | ARTIST | ARTIST | Internal | ©ART
Original Artist | TOPE | ORIGINALARTIST | ORIGINALARTIST | WM/OriginalArtist | ©ope
Performer | TXXX:PERFORMER | PERFORMER | PERFORMER | foobar2000/PERFORMER | ----:com.apple.iTunes:PERFORMER
Comment | COMM: | DESCRIPTION; COMMENT | COMMENT | Internal | ©cmt
Genre | TCON | GENRE | GENRE | WM/Genre | ©gen
Year | TDRC | DATE | DATE | WM/Year | ©day
Track Number | TRCK | TRACK; TRACKNUMBER; TRACKNUM | TRACKNUMBER | WM/TrackNumber | trkn
Total Tracks | TRCK | TOTALTRACKS; TRACKNUMBER; TRACKTOTAL | TOTALTRACKS; TRACKNUMBER | WM/TrackNumber; TotalTracks | trkn
Conductor | TPE3 | CONDUCTOR | CONDUCTOR | WM/Conductor | cond
Orchestra | TXXX:ORCHESTRA3 | ORCHESTRA | ORCHESTRA | Orchestra3 | ----:com.apple.iTunes:ORCHESTRA
Publisher | TPUB | LABEL | LABEL | WM/Publisher | labl
Copyright | TCOP | COPYRIGHT | COPYRIGHT | Internal | ©cpy;cprt
Mood | COMM:MusicMatch_Mood; PRIV:WM/Mood | MOOD | MOOD | WM/Mood | mood
Beats Per Minute | TBPM | BPM | BPM | WM/BeatsPerMinute | tmpo
Lyricist 4 | TEXT | LYRICIST | LYRICIST | WM/Writer | lyrt
Original Lyricist | TOLY | ORIGINALLYRICIST | ORIGINALLYRICIST | WM/OriginalLyricist | olyr
Lyrics | USLT | LYRICS | LYRICS | WM/Lyrics | ©lyr
Key 5 | TKEY | KEY | KEY | WM/InitialKey | ----:com.apple.iTunes:KEY
Cover art | APIC | COVERART / METADATA_BLOCK_PICTURE6 | Cover Art (front) | WM/Picture | covr
Disc number | TPOS | DISCNUMBER | DISCNUMBER | WM/PartOfSet | disk
Total discs | TXXX:TOTALDISCS; TPOS | TOTALDISCS; DISCNUMBER | TOTALDISCS; DISCNUMBER | foobar2000/TOTALDISCS; WM/PartOfSet | disk
Encoded by | TENC | ENCODEDBY | ENCODEDBY | WM/EncodedBy; WM/CodedBy | ©enc
Remixed by | TPE4 | VERSION | VERSION | WM/ModifiedBy | rmix
Rating 7 | POPM; COMM:MusicMatch_Preference | RATING | RATING | WM/SharedUserRating | --
ISRC | TSRC | ISRC | ISRC | WM/ISRC | ISRC
URL | WXXX: | URL | URL | WM/URL | ©url
Album artist | TXXX:ALBUMARTIST; TPE23 | ALBUM ARTIST | ALBUM ARTIST | WM/AlbumArtist; AlbumArtist3 | aART

1 The opus number of the composition (Beethoven's 8th Symphony has opus number 93) or years of writing or something else.

2 The music form of your music, for example for the Mozart's opera "Die Zauberflote" Music category will be "Opera", for Rachmaninov's 2nd concerto the music form is "Piano Concerto" or "Concerto for piano and symphony orchestra" and so on.

3 These fields do not follow the id3v2 specification, which provides "TPE2" for orchestra/band/ensemble etc. But due to consistency with Tag&Rename the tag "Orchestra" is now written in TXXX:ORCHESTRA, and the tag "Album artist" goes to TPE2. Wma files have the same difficulty.

4 The author of opera libretto, of song words etc.

5 The tonality of a composition, for example Beethoven's Fifth Symphony has the key (tonality) C Minor (c-moll, ut mineur etc.).

6 It depends on the option you set in the Qoobar settings.

7 A number from 1 to 5.

## Appendix 2. Qoobar Shortcuts

Shortcut | Action
--- | ---
Ctrl+A | In the files table: Select all files In the tags table: Select all tags
Ctrl+C | Copy selected tags
Shift+Ctrl+C | Copy selected tags into clipboard
Ctrl+Down | Move selected files down
Ctrl+F | In the main window: Fill tags with the information from files names In the tags editing dialog: Start search & replace
Shift+Ctrl+F | Search for music files on your computer
Ctrl+G | In the tags editing dialog: Find next (in Gnome and maybe KDE)
Shift+Ctrl+G | In the tags editing dialog: Find previous (in Gnome and maybe KDE)
Ctrl+H | Add selected tags to the autocompletion list
Ctrl+N | Add a new tag to the selected files
Ctrl+O | Add a folder with music files (with all subfolders)
Shift+Ctrl+O | Add a file / files
Ctrl+P | Play selected files in an external player
Ctrl+Q | Exit from Qoobar
Ctrl+R | Rename selected files
Ctrl+S | Save all files in the current tab
Ctrl+T | New tab
Ctrl+Up | Move selected files up
Ctrl+V | Paste copied tags
Shift+Ctrl+V | Paste text from clipboard into a selected tag
Ctrl+W | Close current tab (in Gnome and maybe in KDE)
Ctrl+X | Cut selected tags
Ctrl+Y | Redo the last change (in Windows)
Ctrl+Z | Undo the last change
Shift+Ctrl+Z | Redo the last change (in Gnome and maybe in KDE)
Del | In the files table: Remove selected files from the list In the tags table: Delete selected tags
Ctrl+Del | Clear the files table of the current tab
F1 | Help on Qoobar
F3 | In the tags editing dialog: Find next (in Windows)
Shift+F3 | In the tags editing dialog: Find previous (in Windows)
Ctrl+F4 | Close current tab (in Windows)

## Appendix 3. Placeholders and functions

This table contains all placeholders that you can use when renaming files and filling or editing tags.

Short Placeholder | Long Placeholder | Meaning | Comments
--- | --- | --- | ---
`%c` | `<composer>` | composer |
`%a` | `<album>` | album |
`%t` | `<title>` | title |
`%p` | `<performer>` | performer |
`%A` | `<artist>` | artist |
`%d` | `<conductor>` | conductor |
`%o` | `<orchestra>` | orchestra |
`%s` | `<subtitle>` | subtitle |
`%k` | `<key>` | key |
`%C` | `<comment>` | comment |
`%g` | `<genre>` | genre |
`%y` | `<year>` | year |
`%n` | `<track number>` | track number | Format: 1, 2, 3, ...10, 11, 12 etc.
`%N` | use `$num(<track number>)` | track number | Format: 01, 02, 03, ...10, 11, 12 etc.
`%T` | `<total tracks>` | total tracks |
`%u` | `<album artist>` | album artist |
`%G` | `<musical category>` | musical category |
`%P` | `<publisher>` | publisher |
`%X` | `<copyright>` | copyright |
`%m` | `<mood>` | mood |
`%B` | `<tempo>` | tempo |
`%w` | `<lyricist>` | lyricist |
`%W` | `<lyrics>` | lyrics |
`%D` | `<disc number>` | disc number |
`%S` | `<total discs>` | total discs |
`%e` | `<encoded by>` | encoded by |
`%x` | `<remixed by>` | remixed by |
`%R` | `<rating>` | rating |
`%O` | `<original album>` | original album |
`%v` | `<original artist>` | original artist |
`%i` | `<original lyricist>` | original lyricist |
`%U` | `<url>` | URL |
`%I` | `<isrc>` | ISRC |
`%b` | `<bitrate>` | bitrate | read only
`%l` | `<length>` | length | For example: 14:53, read only
`%L` |  | length in seconds | For example: 431, read only
`%r` | `<sample rate>` | sample rate | read only
`%h` | `<channels>` | number of channels | read only
`%f` | `<file name>` | filename without extension | read only
`%F` | use `<file name>.<file extension>` | filename with extension | read only
`%z` | use `<file path>/<file name>.<file extension>` | filename with path and extension | read only
`%Z` | `<file path>` | file path | read only
`%E` | `<file extension>` | filename extension | read only
`%%` |  | not necessary field | If you want to skip some text while parsing a file name

Functions that can be used along with placeholders.

Syntax | Description | Example
--- | --- | ---
`$last_word(X)` `$lastword(X)` `$lw(X)` | Returns the last word of the argument. | $last_word(%c)
`$first_word(X)` `$firstword(X)` `$fw(X)` | Returns the first word of the argument. | $first_word(%c)
`$nth_word(X,n)` `$nthword(X,n)` `$nw(X,n)` | Returns the n-th word of the first argument. If the second argument is empty, returns the first word of the first argument. | $nw(%p) $nthword(%p,3)
`$time(X)` `$time()` | Returns the current time formatted as X. The available options are: `h` the hour without a leading zero (0 to 23 or 1 to 12 if AM/PM display) `hh` the hour with a leading zero (00 to 23 or 01 to 12 if AM/PM display) `H` the hour without a leading zero (0 to 23, even with AM/PM display) `HH` the hour with a leading zero (00 to 23, even with AM/PM display) `m` the minute without a leading zero (0 to 59) `mm` the minute with a leading zero (00 to 59) `s` the second without a leading zero (0 to 59) `ss` the second with a leading zero (00 to 59) `z` the milliseconds without leading zeroes (0 to 999) `zzz` the milliseconds with leading zeroes (000 to 999) `AP` or `A` use AM/PM display. A/AP will be replaced by either "AM" or "PM". `ap` or `a` use am/pm display. a/ap will be replaced by either "am" or "pm". `t` the timezone (for example "CEST"). If X is empty, "hh:mm:ss" is used. | $time() $time(hh:mm:ss:zzz) $time(h ap)
`$date(X)` `$date()` | Returns the current date formatted as X. The available options are: `d` the day as number without a leading zero (1 to 31) `dd` the day as number with a leading zero (01 to 31) `ddd` the abbreviated localized day name (e.g. 'Mon' to 'Sun'). `dddd` the long localized day name (e.g. 'Monday' to 'Sunday'). `M` the month as number without a leading zero (1 to 12) `MM` the month as number with a leading zero (01 to 12) `MMM` the abbreviated localized month name (e.g. 'Jan' to 'Dec'). `MMMM` the long localized month name (e.g. 'January' to 'December'). `yy` the year as two digit number (00 to 99) `yyyy` the year as four digit number. If X is empty, "MMM d yyyy" is used. | $date() $date(dddd, MM.dd.yy)
`$lower(X)` | Converts X to lowercase. | $lower(%A)
`$upper(X)` | Converts X to uppercase. | $upper(%a)
`$caps(X)` | Converts first letter in every word of X to uppercase, and all other letters to lowercase, e.g. “blah BLAH” ⇒ “Blah Blah”. | $caps(%t)
`$caps2(X)` | Similar to $caps, but leaves uppercase letters as they are, e.g. “blah BLAH” ⇒ “Blah BLAH”. | $caps2(%t)
`$num(X, Y)` | Displays X as a number and pads with zeros up to Y characters (useful for track numbers etc). If Y is empty, pads to 2 characters. | $num(%n,3) $num(%n) (equals to %N)
`$char(X)` | Inserts Unicode character no. X. | $char(9674) $char(0x25CA)
`$index(X)` | Returns index of the file in the selected files starting from X. If X is empty, indexing starts from 1. | $index() $index(0)
`$section(X,Y,Z)` `$substr(X,Y,Z)` | Returns section of X from Y through Z. Indexing starts from 1. Y and Z can either be numbers or strings. | $section(%c,4,10) $section(%c,0,blah)
`$section2(X,Y,A,B)` | Returns sections of X from A to B with separator Y. Indexing starts from 1. Y can be a character or a string. A and B should be numbers | $section2(%c,:,1,2) $section2(%c,:,2)
`$count(X,Y)` | Returns the number of occurrences of Y in X. Equals to $numsections(X,Y)-1 | $count(%c,:) $count(%c,the)
`$numsections(X,Y)` | Returns the number of sections of X if it were splitted by Y. Returns 1 if X does not contain Y. Equals to $count(X,Y)+1 | $numsections(%c,:)
`$abbr(X)` `$abbr(X,Y)` | Returns an abbreviation of X if X is longer than Y characters; otherwise returns full value of X. If Y is empty, returns an abbreviation of X. | $abbr(%A)
`$ansi(X)` | Returns X with all characters not present in current system codepage replaced with closest matches. | $ansi(Renée Fleming)
`$ascii(X)` | Returns X with all non-ASCII characters replaced with closest ASCII matches. | $ascii(Renée Fleming)
`$if(X,Y,Z)` | If X contains at least one present field, executes/displays Y, otherwise executes/displays Z. | $if(%A,%A,Unknown Artist)
`$if2(X,Y)` | Same as $if(X,X,Y). | $if2(%A,Unknown Artist)
`$if3(X,Y,Z,...)` | Returns the first of parameters that contains at least one present field. |
`$trim(X)` | Trims leading/trailing space characters from X. | $trim(%t)
`$replace(X,Y,Z)` | Replaces all occurrences of string Y in string X with string Z. | $replace(%A,_, )
`$repeat(X,N)` | Repeats X N times. | $repeat( ,4)
`$stripprefix(X,Y,Z,...)` `$stripprefix(X)` | Removes the specified prefixes from X. If Y, Z etc. are empty, removes “A”, “An” and “The” prefixes from X. | $stripprefix(%A)
`$swapprefix(X,Y,Z,...)` `$swapprefix(X)` | Moves the specified prefixes to the end of X. If Y, Z etc. are empty, moves “A”, “An” and “The” prefixes to the end of X. | $swapprefix(%A)
`$simplify(X)` | Simplifies leading, trailing and internal whitespaces in X. | $simplify(%t)
`$transliterate(X,N)` | Transliterates Russian characters. | $transliterate(%A)
`$recode(X,Y)` `$recode(X)` | Changes encoding of X to Y. If Y is empty, uses enca to guess the encoding. | $recode(%A,ISO-8859-3)
`$ifequal(A,B,C,D)` | If the number A is equal to the number B, executes/returns C, otherwise executes/returns D. | $ifequal($index(),3,%p,%A)
`$ifgreater(A,B,C,D)` | If the number A is greater than the number B, executes/returns C, otherwise executes/returns D. | $ifgreater($index(),3,%p,%A)
`$iflonger(A,B,C,D)` | If the string A is longer than B characters, executes/returns C, otherwise executes/returns D. | $iflonger(%A,10,$abbr(%A),%A) equals to $abbr(%A,10)
`$select(N,A,B,C,...)` | Returns N-th of A,B,C… parameters. |
`$cut(X,N)` | Returns first N characters from the left of the string X. Same as `$left(X,N)` | $cut(%A,10)
`$left(X,Y)` | Returns first N characters from the left of the string X. Same as `$cut(X,N)` | $left(%A,10)
`$fix_eol(X)` `$fix_eol(X,Y)` | Truncates multiline strings, adding ” (…)” (version 1) or Y (version 2) at the end. | $fix_eol(%W,...)
`$insert(A,B,N)` | Inserts string B into string A after N characters. | $insert(%A,artist:,0)
`$len(X)` | Returns length of the string X in characters. | $len(%A)
`$roman(X)` | Formats the integer number X as roman numeral. X must be greater than 0. | $roman($index())

## Appendix 4. Regular expressions

A regular expression is a pattern for matching sub-strings in a text. Qoobar supports regular expressions provided by the QRegExp class, which is modelled on Perl's regexp language. Here is only a brief description of expressions, quantifiers, and assertions that can be useful in your search.

Characters and Abbreviations for Sets of Characters
`\a` | matches the ASCII bell (BEL, 0x07).
`\f` | matches the ASCII form feed (FF, 0x0C).
`\n` | matches the ASCII line feed (LF, 0x0A, Unix newline).
`\r` | matches the ASCII carriage return (CR, 0x0D).
`\t` | matches the ASCII horizontal tab (HT, 0x09).
`\v` | matches the ASCII vertical tab (VT, 0x0B).
`\xhhhh` | matches the Unicode character corresponding to the hexadecimal number hhhh (between 0x0000 and 0xFFFF).
`\0ooo` | (i.e., \zero ooo) matches the ASCII/Latin1 character for the octal number ooo (between 0 and 0377).
`.` | (dot) matches any character (including newline).
`\d` | matches a digit.
`\D` | matches a non-digit.
`\s` | matches a whitespace character.
`\S` | Matches a non-whitespace character.
`\w` | Matches a word character (letter, number, marks, or '_').
`\W` | Matches a non-word character.
`\n` | The n-th backreference, e.g. \1, \2, etc.
Sets of Characters, grouping
`[abc]` | matches 'a' or 'b' or 'c'.
`[^abc]` | matches anything but 'a' or 'b' or 'c'.
`[a-e]` | matches a range of characters from 'a' to 'e'.
`(E|N)` | matches expression E or expression N, where E and N can be complex.
Quantifiers
`E?` | matches zero or one occurrences of E.
`E+` | matches one or more occurrences of E.
`E*` | matches zero or more occurrences of E.
`E{n}` | matches exactly n occurrences of E.
`E{n,}` | matches at least n occurrences of E.
`E{,m}` | matches at most m occurrences of E.
`E{n,m}` | matches at least n and at most m occurrences of E.
To apply a quantifier to more than just the preceding character, use parentheses to group characters together in an expression. For example, tag+ matches a 't' followed by an 'a' followed by at least one 'g', whereas (tag)+ matches at least one occurrence of 'tag'
Assertions
`^` | The caret signifies the beginning of the string. If you wish to match a literal `^` you must escape it by writing `\\^`.
`$` | The dollar signifies the end of the string. If you wish to match a literal $ you must escape it by writing \$.
`\b` | A word boundary.
`\B` | A non-word boundary. This assertion is true wherever `\b` is false.
`(?=E)` | Positive lookahead. This assertion is true if the expression matches at this point in the regexp. For example, `const(?=\s+char)` matches 'const' whenever it is followed by 'char', as in 'static const char *'. (Compare with `const\s+char`, which matches 'static const char *'.)
`(?!E)` | Negative lookahead. This assertion is true if the expression does not match at this point in the regexp. For example, `const(?!\s+char)` matches 'const' except when it is followed by 'char'..